web抓取一个网页,其中包含通过ajax加载的动态内容

Har*_*son 5 python scrapy web-scraping

说我希望在这个页面上刮取产品(http://shop.coles.com.au/online/national/bread-bakery/fresh/bread#pageNumber=2¤tPageSize=20)

但是产品是从post请求中加载的.这里很多帖子建议模拟一个请求得到动态的内容,但在我的情况下,Form Data对我来说是未知的,即catalogId,categoryId.

我想知道response在ajax呼叫结束后有可能得到它吗?

ale*_*cxe 2

您可以从withcatalogId获取发出 POST 请求所需的 和其他参数值:formid="search"

<form id="search" name="search" action="http://shop.coles.com.au/online/SearchDisplay?pageView=image&amp;catalogId=10576&amp;beginIndex=0&amp;langId=-1&amp;storeId=10601" method="get" role="search">
    <input type="hidden" name="storeId" value="10601" id="WC_CachedHeaderDisplay_FormInput_storeId_In_CatalogSearchForm_1">
    <input type="hidden" name="catalogId" value="10576" id="WC_CachedHeaderDisplay_FormInput_catalogId_In_CatalogSearchForm_1">
    <input type="hidden" name="langId" value="-1" id="WC_CachedHeaderDisplay_FormInput_langId_In_CatalogSearchForm_1">
    <input type="hidden" name="beginIndex" value="0" id="WC_CachedHeaderDisplay_FormInput_beginIndex_In_CatalogSearchForm_1">
    <input type="hidden" name="browseView" value="false" id="WC_CachedHeaderDisplay_FormInput_browseView_In_CatalogSearchForm_1">
    <input type="hidden" name="searchSource" value="Q" id="WC_CachedHeaderDisplay_FormInput_searchSource_In_CatalogSearchForm_1">
    ...
</form>
Run Code Online (Sandbox Code Playgroud)

使用FormRequest提交此表格。


我想知道ajax调用完成后是否可以获得响应?

Scrapy 不是浏览器 - 它不会发出额外的 AJAX 请求来加载页面,并且没有内置任何内容来执行 JavaScript。您可以考虑使用真正的浏览器并在更高级别上解决它 - 查看seleniumpackage.json。还有相关的scrapy-splash项目。

也可以看看: