Excel vba在单元格中提取google搜索结果URL前5名
我有下面的VBA代码,它可以很好地获得第一个结果URL,但我想修改它以获得前5个结果URL 我尝试了几个小时,但无法找到要做的事情:( 任何帮助都将不胜感激Excel vba在单元格中提取google搜索结果URL前5名,excel,vba,Excel,Vba,我有下面的VBA代码,它可以很好地获得第一个结果URL,但我想修改它以获得前5个结果URL 我尝试了几个小时,但无法找到要做的事情:( 任何帮助都将不胜感激 Sub XMLHTTP() Dim URL As String, lastRow As Long Dim XMLHTTP As Object, html As Object, objResultDiv As Object, objH3 As Object, link As Object Dim start_time As Date Dim
Sub XMLHTTP()
Dim URL As String, lastRow As Long
Dim XMLHTTP As Object, html As Object, objResultDiv As Object, objH3 As Object, link As Object
Dim start_time As Date
Dim end_time As Date
lastRow = Range("A" & Rows.Count).End(xlUp).Row
Dim cookie As String
Dim result_cookie As String
start_time = Time
Debug.Print "start_time:" & start_time
For i = 2 To lastRow
URL = "https://www.google.co.in/search?q=" & Cells(i, 1) & "&rnd=" & WorksheetFunction.RandBetween(1, 10000)
Set XMLHTTP = CreateObject("MSXML2.serverXMLHTTP")
XMLHTTP.Open "GET", URL, False
XMLHTTP.setRequestHeader "Content-Type", "text/xml"
XMLHTTP.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0"
XMLHTTP.send
Set html = CreateObject("htmlfile")
html.body.innerHTML = XMLHTTP.ResponseText
Set objResultDiv = html.getelementbyid("rso")
Set objH3 = objResultDiv.getElementsByTagName("H3")(0)
Set link = objH3.getElementsByTagName("a")(0)
str_text = Replace(link.innerHTML, "<EM>", "")
str_text = Replace(str_text, "</EM>", "")
Cells(i, 2) = str_text
Cells(i, 3) = link.href
DoEvents
Next
end_time = Time
Debug.Print "end_time:" & end_time
Debug.Print "done" & "Time taken : " & DateDiff("n", start_time, end_time)
MsgBox "done" & "Time taken : " & DateDiff("n", start_time, end_time)End Sub
Sub-XMLHTTP()
将URL变暗为字符串,最后一行变长
Dim XMLHTTP作为对象,html作为对象,objResultDiv作为对象,objH3作为对象,link作为对象
将开始时间变暗为日期
Dim end_时间作为日期
lastRow=范围(“A”和Rows.Count).End(xlUp).Row
点心串
Dim result\u cookie作为字符串
开始时间=时间
调试。打印“开始时间:&开始时间”
对于i=2到最后一行
URL=”https://www.google.co.in/search?q=“&Cells(i,1)和”&rnd=“&WorksheetFunction.randbween(11000)
设置XMLHTTP=CreateObject(“MSXML2.serverXMLHTTP”)
XMLHTTP.Open“GET”,URL,False
XMLHTTP.setRequestHeader“内容类型”、“文本/xml”
XMLHTTP.setRequestHeader“用户代理”、“Mozilla/5.0(Windows NT 6.1;rv:25.0)Gecko/20100101 Firefox/25.0”
XMLHTTP.send
设置html=CreateObject(“htmlfile”)
html.body.innerHTML=XMLHTTP.ResponseText
Set objResultDiv=html.getelementbyid(“rso”)
Set objH3=objResultDiv.getElementsByTagName(“H3”)(0)
Set link=objH3.getElementsByTagName(“a”)(0)
str_text=Replace(link.innerHTML,“,”)
str_text=Replace(str_text,“,”)
单元格(i,2)=str_文本
单元格(i,3)=link.href
多芬特
下一个
结束时间=时间
调试。打印“结束时间:&结束时间”
Debug.Print“done”和“Time take:”&DateDiff(“n”,开始时间,结束时间)
MsgBox“完成”和“花费的时间:&DateDiff(“n”,开始时间,结束时间)结束子节点
我没有VBA的专业知识,但在我的最后一次尝试中,我尝试这样做,并在所有结果中获得相同的链接
Set objH3 = objResultDiv.getElementsByTagName("H3")(0)
Set link = objH3.getElementsByTagName("a")(0)
str_text = Replace(link.innerHTML, "<EM>", "")
str_text = Replace(str_text, "</EM>", "")
Cells(i, 2) = str_text
Cells(i, 3) = link.href
Set link2 = objH3.getElementsByTagName("a")(0)
str_text = Replace(link2.innerHTML, "<EM>", "")
Cells(i, 4) = link2.href
Set link3 = objH3.getElementsByTagName("a")(0)
str_text = Replace(link3.innerHTML, "<EM>", "")
Cells(i, 5) = link3.href
Set link4 = objH3.getElementsByTagName("a")(0)
str_text = Replace(link4.innerHTML, "<EM>", "")
Cells(i, 6) = link4.href
Set objH3=objResultDiv.getElementsByTagName(“H3”)(0)
Set link=objH3.getElementsByTagName(“a”)(0)
str_text=Replace(link.innerHTML,“,”)
str_text=Replace(str_text,“,”)
单元格(i,2)=str_文本
单元格(i,3)=link.href
Set link2=objH3.getElementsByTagName(“a”)(0)
str_text=Replace(link2.innerHTML,“,”)
单元格(i,4)=link2.href
Set link3=objH3.getElementsByTagName(“a”)(0)
str_text=Replace(link3.innerHTML,“,”)
单元格(i,5)=link3.href
Set link4=objH3.getElementsByTagName(“a”)(0)
str_text=Replace(link4.innerHTML,“,”)
单元格(i,6)=link4.href
明白了。谢谢吉普给我指明了正确的方向
Sub-XMLHTTP()
将URL变暗为字符串,最后一行变长
Dim XMLHTTP作为对象,html作为对象,objResultDiv作为对象,objH3作为对象,link作为对象
将开始时间变暗为日期
Dim end_时间作为日期
lastRow=范围(“A”和Rows.Count).End(xlUp).Row
点心串
Dim result\u cookie作为字符串
开始时间=时间
调试。打印“开始时间:&开始时间”
对于i=2到最后一行
URL=”https://www.google.co.in/search?q=“&Cells(i,1)和”&rnd=“&WorksheetFunction.randbween(11000)
设置XMLHTTP=CreateObject(“MSXML2.serverXMLHTTP”)
XMLHTTP.Open“GET”,URL,False
XMLHTTP.setRequestHeader“内容类型”、“文本/xml”
XMLHTTP.setRequestHeader“用户代理”、“Mozilla/5.0(Windows NT 6.1;rv:25.0)Gecko/20100101 Firefox/25.0”
XMLHTTP.send
设置html=CreateObject(“htmlfile”)
html.body.innerHTML=XMLHTTP.ResponseText
Set objResultDiv=html.getelementbyid(“rso”)
Set objH3=objResultDiv.getElementsByTagName(“H3”)(0)
Set link=objH3.getElementsByTagName(“a”)(0)
str_text=Replace(link.innerHTML,“,”)
str_text=Replace(str_text,“,”)
单元格(i,2)=link.href
Set objH3=objResultDiv.getElementsByTagName(“H3”)(1)
Set link=objH3.getElementsByTagName(“a”)(0)
str_text=Replace(link.innerHTML,“,”)
str_text=Replace(str_text,“,”)
单元格(i,3)=link.href
Set objH3=objResultDiv.getElementsByTagName(“H3”)(2)
Set link=objH3.getElementsByTagName(“a”)(0)
str_text=Replace(link.innerHTML,“,”)
str_text=Replace(str_text,“,”)
单元格(i,4)=link.href
Set objH3=objResultDiv.getElementsByTagName(“H3”)(3)
Set link=objH3.getElementsByTagName(“a”)(0)
str_text=Replace(link.innerHTML,“,”)
str_text=Replace(str_text,“,”)
单元格(i,5)=link.href
Set objH3=objResultDiv.getElementsByTagName(“H3”)(4)
Set link=objH3.getElementsByTagName(“a”)(0)
str_text=Replace(link.innerHTML,“,”)
str_text=Replace(str_text,“,”)
单元格(i,6)=link.href
多芬特
下一个
结束时间=时间
调试。打印“结束时间:&结束时间”
Debug.Print“done”和“Time take:”&DateDiff(“n”,开始时间,结束时间)
MsgBox“完成”和“花费的时间:&DateDiff(“n”,开始时间,结束时间)
End Sub
因此您正在“尝试数小时”编写一个循环,将.getElementsByTagName(“H3”)(0)中的0从0更改为4?请将您的问题包括在上次尝试中。我已更新了它,请查看它