无法从第二页抓取数据

时间:2019-07-29 19:21:56

标签: python scrapy

我在刮取一页以上的数据时遇到了问题。在启动控制台中,我设法获得了2-3页的HTML内容。在第一个循环的Lua脚本中,当我定义一次迭代以提取一页时,我得到50个网址。如果进行2次或更多次迭代,则不会返回任何数据。 在控制台中,我得到:

ThreadPoolTaskExecutor

Ignoring response <504 https://shopee.sg/search?keyword=hdmi>: HTTP status code is not handled or not allowed

这是我的代码

504 Gateway Time-out

1 个答案:

答案 0 :(得分:1)

我认为您由于lua脚本而收到超时错误。当您从蜘蛛网发出请求时,开始接收响应的时间。在lua脚本中,您具有以下内容: 两次运行js进行滚动,这需要一些时间 两次调用函数splash:wait(5.0)用于下载和呈现一些数据 然后,您致电assert(splash:wait(8.0))

最终最短时间: (3 * 8)+(2 * 5)+运行splash:runjs的时间和其他一些事情

但是在您的情况下,不需要Splash。您可以直接从蜘蛛请求下一页。 Chrome-> Dev工具->网络-> XHR,您将在其中找到请求网址https://shopee.sg/api/v2/search_items/?by=relevancy&keyword=hdmi&limit=50&newest=250&order=desc&page_type=search

然后,您可以使用它来获取所需的所有信息。在您的情况下,它是产品的URL,但是没有直接的url,因此您必须对名称加以暗示。例如,从[Spot is sold very well]Micro USB para HDMI Adaptador MHL para HDMI 1080 P-Spot-is-sold-very-well-Micro-USB-para-HDMI-Adaptador-MHL-para-HDMI-1080-P-HD-TV-并添加2个ID:shopiditemid,您会发现名称之间存在差异-但这是可行的