首页 > 解决方案 > Scrapy:网页下一个按钮使用 WebForm_DoPostBackWithOptions()

问题描述

我是 scrapy 的新手并试图抓取https://www.sakan.co/result?srv=1&prov=&cty=&maintyp=1&typ=5&minpr=&maxpr=&bdrm=&blk=

该网页使用的href是以下内容:

href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$Content$rptPaging$ctl02$lbPaging", "", true, "", "", false, true))"

数据正在动态加载。我正在尝试查找正在加载但找不到任何数据的源(如果有的话,API 调用)。如何导航到下一页并使用 Scrapy 抓取数据。

标签: pythonasp.netscrapy

解决方案


这个 js 有效地做的是触发一个 POST 请求,你可以在浏览器开发者工具,网络选项卡中查看请求的详细信息。(Firefox 中的 F12 - 打开选项卡并单击链接) 在此处输入图像描述

您的 Scrapy 需要重现相同的 POST 请求。正文中的所有信息都在页面中可用,请记住那些以 开头的字段__,例如__VIEWSTATE,是依赖于实例的,因此您需要从 Scrapy 加载的页面中检索它们的值,复制和粘贴通常会失败。

更简单的方法是使用FormRequest.from_response() 方法。但是,检查该方法是否生成与您的浏览器相同的请求正文很重要,该方法通常会跳过必填字段或添加额外的字段。(它依赖于页面的<form>

您可以在Scrapy FAQ的此链接中阅读有关抓取此类页面的更多信息。

最后一个提示:如果您的请求正文就像浏览器一样,但请求仍然失败,您可能还需要重现请求标头。


推荐阅读