【问题标题】:Weird "Next" link on ebay?ebay上奇怪的“下一个”链接?
【发布时间】:2021-02-18 15:29:12
【问题描述】:

我正在开发一个网络抓取应用程序,并正在使用 ebay 对其进行测试。问题是应用程序应该遵循“下一步”链接(页面底部的那个应该转到下一页结果)但它有点停留在同一页面上(是的,我实际上不确定那)。如果您尝试打开 ebay 并搜索任何会产生多页结果的术语,然后复制“下一步”的链接并将其粘贴到新窗口或右键单击它并选择在新选项卡/窗口中打开,它将保持在同一页面上。我在 Chrome 和 IE8 上对其进行了测试。所以我的问题是,当这些浏览器实际点击链接时(当我只是点击它时),它们在做什么,以便我可以对我的抓取应用程序做同样的事情? (哦,顺便说一句,我正在使用 C#)

【问题讨论】:

    标签: c# .net html browser


    【解决方案1】:

    对于 eBay,它只是一个普通链接(至少在 http://www.ebay.com 上,寻找 page 2 of TV's)所以问题可能出在您的代码上(例如,您是否存储了 cookie?)。根据您的描述,听起来这是一个 AJAX 请求,它将“在后台”并从服务器获取 XML,该 XML 在客户端由 JavaScript 呈现。

    传统上,很难遵循 AJAX 请求。但是,对于 ebay,我建议使用 ebay 必须查询信息的接口。如果您正在构建通用网络爬虫,请远离 AJAX 请求。大多数时候,Google 也不打扰。

    【讨论】:

    • 但是,您是否尝试过复制链接然后将其粘贴到新窗口中?它不会回到第一页吗?我只想知道当我单击“下一步”时浏览器会做什么,以便它登陆下一页,以便我的程序也可以这样做。
    • @jsoldi:我不知道你做了什么来获得不同的结果,但这正是我所做的,而且它正常工作。右键单击上面的链接(在“电视的第 2 页” 下)并选择“复制链接位置”(或您的语言/浏览器中的等效项)。粘贴到新的浏览器窗口或什至另一个浏览器(从 FF 到 IE 到 Chrome),您会看到它显示了第二页,就像您单击链接时一样。如果您的程序使用该地址执行HTTP GET(即使用System.Net.WebClient)并处理接收到的页面,您的程序将自动执行完全相同的操作。
    • @jsoldi, quote "what the browser does when I click on "Next" " >> 也许我误解了你的问题,但浏览器所做的是解释下面的任何内容<a href="...">,或者作为脚本的结果放置在那里的东西,然后简单地发出HTTP GET。如果您想确切地知道这是怎么回事,那么 Gourley 等人的 HTTP, The Definitive Guide。 Sounders 和 High Performance Web Sites 这两本书都非常详细地解释了这个过程。
    【解决方案2】:

    我做了一个element.InvokeMember("click");(其中element 是一个HtmlElement)并且它有效。不知道为什么。无论如何,我会看看那个 HTTP GET 的东西。

    【讨论】:

    • HTTP GET 发生在每个请求中,总是(好吧,除非它是 HTTP POST)。调用 click 事件很好,但如果您正在构建爬虫,这是一个糟糕的方法,因为它假定交互并可能调用 JavaScript。您应该只获取 URL(我假设您已经通过解析收到的文档原始数据获得)并请求它(例如 WebClient)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    相关资源
    最近更新 更多