【问题标题】:Scraping a web site for images that's AJAX intensive为 AJAX 密集型图像抓取网站
【发布时间】:2016-11-04 18:44:49
【问题描述】:

我是 Scraping 场景的新手,希望获得有关如何从网页获取具有特定类名的所有图像的信息。

问题在于它全部使用 AJAX 构建,并且它只会在您向下滚动时加载更多图像。使用 Webbrowser 控件自然加载网站只会在您开始向下滚动之前加载默认数量的图像。

幸运的是,我可以获得该页面上任何特定类别的图片总数。

在开始运行 htmlagilitypack 命令以抓取具有特定类名的所有图像之前,我将如何获取所有图像?

它会在开始时加载大约 30 张图片,然后根据您选择的类别,它可以包含或多或少总共 800 张图片。当您滚动靠近底部时,它会加载另外 30 张图片。

那么,是否有任何技巧可以使这个过程自动化并知道它何时到达加载的所有图像的底部?

到目前为止,我在页面上默认获取 30 张图片的代码是这样的:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim doc As New HtmlAgilityPack.HtmlDocument()

    htmlCode = WebBrowser1.Document.Body.OuterHtml        
    doc.LoadHtml(htmlCode)

    Dim totalNumOfPosters() As String = doc.DocumentNode.SelectSingleNode("//span[@class='main-title-divider']").InnerText.Split(" ")

    Debug.WriteLine(totalNumOfPosters(0)) 'Shows total num of images

    For Each img As HtmlNode In doc.DocumentNode.SelectNodes("//img[contains(@class,'img-poster')]")
        posterArray.Add(img.Attributes("src").Value.ToString)
    Next
End Sub

我只需要以前做过类似事情的人告诉我获取其余图像的最佳方法!

【问题讨论】:

    标签: ajax vb.net web-scraping web-crawler html-agility-pack


    【解决方案1】:

    一般的想法是,使用您的 Web 开发工具(Firebug 或 google 开发工具取决于您使用的浏览器)来确定站点如何发送 Ajax 请求。

    对于 Firefox,转到您想要的页面,F12,导航到 Net 选项卡,然后 XHR 子标签。

    先清除 firebug xhr 标签。

    滚动网页。

    回到firebug面板,你会得到请求信息。

    扩展 + 。

    转到帖子选项卡,然后您将能够看到帖子参数。

    从您的客户端发送带有参数的请求。

    但是如果网站需要登录才能看到内容,那么由于同源政策,那就是另一个故事了。

    【讨论】:

    • 找不到 POST 的 +。请参阅 OP 获取图像。
    • 尝试使用 Firebug。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 2016-09-08
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    相关资源
    最近更新 更多