尝试将网站从网站中刮取到excel,然后转换为word文档
所以我被指派从一个网站上搜集一些信息。这些信息非常丰富,我需要点击各个“阅读更多”按钮才能获得完整的信息。单击“阅读更多”后,我需要返回上一页,单击第二项上的“阅读更多”。然后冲洗并重复,直到我得到所需的所有信息。一旦我获得了所有信息,就需要将其转换为word文档尝试将网站从网站中刮取到excel,然后转换为word文档,excel,web-scraping,vba,Excel,Web Scraping,Vba,所以我被指派从一个网站上搜集一些信息。这些信息非常丰富,我需要点击各个“阅读更多”按钮才能获得完整的信息。单击“阅读更多”后,我需要返回上一页,单击第二项上的“阅读更多”。然后冲洗并重复,直到我得到所需的所有信息。一旦我获得了所有信息,就需要将其转换为word文档 导航到URL,我知道怎么做 点击“阅读更多”的“按钮”,问题是有70多个“阅读更多”的按钮,我不知道如何区分它们 一旦我有了所有的信息,只需要几条信息,我怎样才能让它变得优秀 信息收集到excel后,如何将其转换为word 代码示例:
'Bring IE up and navigate to page
Set ie = New SHDocVw.InternetExplorerMedium
ie.Visible = True
'Set the URL
strURL = "my url"
'Navigate to url
ie.Navigate strURL
'Wait for the page to show up
按钮,点击
我对Vba的excel选项相当陌生,我相信有更简单的方法,但这是我应该做的。非常感谢任何帮助或提示
URL是,所以这比预期的要复杂,因为我在获取整个结果集时遇到了问题。最后,我使用了它,因为它更好地处理了初始页面加载,并且我没有收到关于cookies之类的重复警告。老实说,这可能是因为我使用了Chrome驱动程序!当然,可以更改驱动程序,使其成为另一种受支持的浏览器类型 代码:
Option Explicit
'281 Results on 2018-05-04 '16:00
Public Sub test()
Dim d As WebDriver
Set d = New ChromeDriver
With d
.Start "Chrome"
.Get "https://www.legacy.com/obituaries/commercialappeal/browse?view=name"
Dim elements As List
Set elements = d.FindElementsByTag("a").Attribute("href")
Dim hrefCollection As New Collection, i As Long
For i = 1 To elements.Count
If InStr(elements(i), "https://www.legacy.com/obituaries/commercialappeal/obituary.aspx?n=") > 0 Then
If i = 1 Then
hrefCollection.Add elements(i)
ElseIf i > 1 And elements(i) <> elements(i - 1) Then
hrefCollection.Add elements(i)
End If
End If
Next i
End With
Dim wrdApp As Object, wrdDoc As Object
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
Set wrdDoc = wrdApp.Documents.Add
With wrdApp.ActiveDocument.PageSetup
.Orientation = 1 'wdOrientLandscape
.TopMargin = wrdApp.InchesToPoints(0.98)
.BottomMargin = wrdApp.InchesToPoints(0.98)
.LeftMargin = wrdApp.InchesToPoints(0.98)
.RightMargin = wrdApp.InchesToPoints(0.98)
End With
With wrdDoc
.Styles.Add ("SHeading")
.Styles.Add ("StdText")
With .Styles("SHeading").Font
.Name = "Arial"
.Size = 14
.Bold = False
.Underline = True
End With
With .Styles("StdText").Font
.Name = "Arial"
.Size = 8
.Bold = False
.Underline = False
End With
End With
wrdApp.Selection.Collapse Direction:=0 'wdCollapseEnd
For i = 1 To 2 '<== Test example to get two results
DoEvents
wrdApp.Selection.TypeParagraph
wrdApp.Selection.Style = wrdDoc.Styles("SHeading")
wrdApp.Selection.TypeText Text:=GetInfo(hrefCollection.Item(i), d)
Next i
' For Each Item In hrefCollection ''<== use this above to get all results
' DoEvents
' wrdApp.Selection.TypeParagraph
' wrdApp.Selection.Style = wrdDoc.Styles("SHeading")
' wrdApp.Selection.TypeText Text:=GetInfo(hrefCollection.Item(i), d)
' Next Item
d.Quit
End Sub
Public Function GetInfo(ByVal url As String, ByVal d As WebDriver) As String
With d
.Get url
GetInfo = d.FindElementByClass("ObitTextContent").Text
End With
End Function
选项显式
'281 2018-05-04'16:00的结果
公共子测试()
dimdaswebdriver
设置d=新的色度驱动器
与d
.启动“Chrome”
.得到“https://www.legacy.com/obituaries/commercialappeal/browse?view=name"
将元素设置为列表
Set elements=d.FindElementsByTag(“a”).Attribute(“href”)
Dim hrefCollection作为新收藏,我将
对于i=1到元素。计数
如果仪表(元件(i),”https://www.legacy.com/obituaries/commercialappeal/obituary.aspx?n=然后>0
如果i=1,那么
hrefCollection.添加元素(i)
ElseIf i>1和元素(i)元素(i-1)则
hrefCollection.添加元素(i)
如果结束
如果结束
接下来我
以
Dim wrdApp作为对象,wrdDoc作为对象
Set wrdApp=CreateObject(“Word.Application”)
wrdApp.Visible=True
设置wrdDoc=wrdApp.Documents.Add
使用wrdApp.ActiveDocument.PageSetup
.Orientation=1'WDOrient横向
.TopMargin=wrdApp.InchesToPoints(0.98)
.BottomMargin=wrdApp.InchesToPoints(0.98)
.LeftMargin=wrdApp.InchesToPoints(0.98)
.RightMargin=wrdApp.InchesToPoints(0.98)
以
与wrdDoc
.Styles.Add(“sheding”)
.Styles.Add(“StdText”)
带有.Styles(“sheding”).Font
.Name=“Arial”
.尺寸=14
.Bold=错误
.Underline=True
以
带有.Styles(“StdText”).Font
.Name=“Arial”
.Size=8
.Bold=错误
.Underline=False
以
以
wrdApp.Selection.collapseend的折叠方向:=0'wdCollapseEnd
对于没有url的i=1到2',很难提供帮助。但是在你的例子中,我会做一个循环来检查所有的按钮,并尝试通过比较class属性或其他东西来获得你想要的按钮。检查HTML代码,因为必须有一些东西可以帮助您识别该按钮的唯一性。这是我需要按下每个查看讣告按钮并提取完整描述的网站。我进一步检查了代码,我相信讣告按钮分离的尊严是“数据反应Id”但我认为它们会随着不同死亡的更新而不断变化。每个讣告按钮都有链接。因此,首先解析这些相关链接,然后使用xmlhttp
request为每个链接创建http请求。就这样。