I have created a macro which scrapes relevant information from Brief profiles (BP) that can be searched for at: https://echa.europa.eu/information-on-chemicals
This works using an XMLHTTP request to the URL of the Brief Profile and works fine.
I now wish to create a macro which searches the same website to find the URL(href) of the brief profile.
As a beginner to VBA I have successfully achieved this using a browser but I wish to convert this to XML HTTP request to improve efficiency.
Using IE Browser Automation:
Sub Gethref()
Dim IE As New SHDocVw.InternetExplorer
Dim HTMLDoc As MSHTML.HTMLDocument
Dim HTMLInput As MSHTML.IHTMLElement
Dim HTMLButtom As MSHTML.IHTMLElement
Dim HTMLhref As MSHTML.IHTMLElement
'Go to Website
IE.Visible = True
IE.navigate "https://echa.europa.eu/information-on-chemicals"
'Check Website is ready for search and set HTMLDoc to IE.Document for elements
Do While IE.readyState <> READYSTATE_COMPLETE
Loop
Set HTMLDoc = IE.document
'Set value of Searchbox to keyword
Set HTMLInput = HTMLDoc.getElementById("_disssimplesearch_WAR_disssearchportlet_sskeywordKey")
HTMLInput.Value = "Potassium mercaptoacetate"
'Search for Result
Set HTMLButton = HTMLDoc.getElementById("_disssimplesearchhomepage_WAR_disssearchportlet_searchButton")
HTMLButton.Click
'Check page has loaded
Do While IE.readyState = READYSTATE_COMPLETE or IE.Busy
Loop
Set HTMLDoc = IE.document
'Find Desired href
Set HTMLhref = HTMLDoc.getElementsByClassName("briefProfileLink")(0)
Debug.Print HTMLhref.getAttribute("href")
End Sub
This should print the href for Potassium mercaptoacetate as https://echa.europa.eu/brief-profile/-/briefprofile/100.000.602
I have started attempted to convert as much as I can using XML HTTP but Im running into issues which I dont quite understand
Using XML HTTP Request (Not working)
Sub Gethref()
Dim XMLPage As New MSXML2.XMLHTTP60
Dim HTMLDoc As New MSHTML.HTMLDocument
Dim HTMLInput As MSHTML.IHTMLElement
Dim HTMLButtom As MSHTML.IHTMLElement
Dim HTMLhref As MSHTML.IHTMLElement
'Go to Website
XMLPage.Open "GET", "https://echa.europa.eu/information-on-chemicals", False
XMLPage.send
'Set value of Searchbox to keyword
Set HTMLInput = HTMLDoc.getElementById("_disssimplesearch_WAR_disssearchportlet_sskeywordKey")
HTMLInput.Value
'Search for Result
Set HTMLButton = HTMLDoc.getElementById("_disssimplesearchhomepage_WAR_disssearchportlet_searchButton")
HTMLButton.Click
'Check page has loaded
HTMLDoc.body.innerHTML = IE.document.responseText
'Find Desired href
Set HTMLhref = HTMLDoc.getElementsByClassName("briefProfileLink")(0)
Debug.Print HTMLhref.getAttribute("href")
End Sub
I will update as I make progress with this but if anyone can offer help it will be great.
https://echa.europa.eu/brief-profile/-/briefprofile/100.047.293is returned as the only result.