【发布时间】:2017-01-03 06:39:56
【问题描述】:
我想废弃Lulu webstore。我有以下问题。
- 网站内容是动态加载的。
- 网站在尝试访问时,重定向到选择国家页面。
- 选择国家后,弹出选择送货地点,然后跳转到首页。
- 当您尝试以编程方式点击结束页面时,您会收到一个空响应,因为内容是动态加载的。
我有一个结束 URL 列表,我必须从中抓取数据。例如,考虑mobile accessories。现在我想
- 直接获取该页面的 HTML 源代码,它是绕过选择国家、选择位置弹出窗口动态加载的,这样我就可以使用我的 Scrapy Xpath 选择器来提取数据。
- 如果您建议我使用 Selenium、PhantomJS、Ghost 或其他东西来处理动态内容,请理解我希望在处理完所有将发送到 Scrapy 的动态内容后,最终 HTML 源就像在 Web 浏览器中一样。
- 另外,我尝试使用代理跳过选择国家/地区弹出窗口,但它仍然会加载它并选择交货位置。
- 我尝试过使用 Splash,但它返回了选择国家页面的来源。
【问题讨论】:
-
动态内容意味着 AJAX 调用。只需获取请求的结构,然后使用产品的 id 在循环中调用它。通常你只需要
requests模块,结合BeautifulSoup。我猜的位置也是如此。 -
@Cal Eliacheff 感谢您的评论,但您的方式的问题是,即使我使用与 Web 浏览器相同的 cookie 和用户代理发出请求,我仍然得到相同的响应。我需要在来自服务器的响应和脚本之间的一些东西来处理这些动态内容并给出最终结果,以便我可以将其提供给 scrapy。
-
您应该更好地查看电话。该位置存储在您从
SelectLocation.aspx获得的cookie 中。例如:http://www.luluwebstore.com/SelectLocation.aspx?Location=13241&DeliveryMode=H&ReturnUrl=http://www.luluwebstore.com允许您绕过国家选择。看起来只有 GET 请求,通常使用起来更简单。恕我直言,您不想在此类网站上使用 scrapy。 -
@Cal Eliacheff 很抱歉,我没有理解您的评论。但我找不到任何
SelectLocation.aspx或类似的脚本/cookie 来设置位置。另外,我是动态内容爬行的新手。你能解释得更清楚一点吗?此外,我已经从 Web 浏览器的请求标头中引用了 cookie,并且还包含在标头中。 -
好了,在requests.Session里面,调用上面的url就可以进入主页面,然后就可以调用产品了。提示:只需使用开发工具的网络选项卡查看发生了什么(您可以只过滤 html 和 xhr 事件),然后使用
requests复制流程。
标签: python proxy scrapy web-crawler