Web scraping Scrapy不加载页面

Web scraping Scrapy不加载页面,web-scraping,scrapy,Web Scraping,Scrapy,我使用scrapy,start\u url具有以下结构: https://www.yoox.com/us/men/shoponline/accessories_mc#/dept=men&gender=U&page=1&season=X Scrapy不加载页面: scrapy shell https://www.yoox.com/us/men/shoponline/accessories_mc#/dept=men&gender=U&page=1&s

我使用scrapy,
start\u url
具有以下结构:

https://www.yoox.com/us/men/shoponline/accessories_mc#/dept=men&gender=U&page=1&season=X
Scrapy不加载页面:

scrapy shell https://www.yoox.com/us/men/shoponline/accessories_mc#/dept=men&gender=U&page=1&season=X
可能是因为链接缺少符号
。什么是不正确的?

如上所述,您的数据是由JavaScript从另一个链接动态加载的。但您可以在代码中直接使用该链接:
https://www.yoox.com/US/shoponline?dept=men&gender=U&page=1&season=X&clientabt=SmsMultiChannel_ON%2CSizeIsocode_ON%2CNewDelivery_ON


我使用Chrome开发者工具和网络标签找到了上面的链接。

我想你可能不需要像其他海报建议的那样使用splash。我将研究使用开发人员工具,看看您是否可以直接访问API

如果您确实需要Splash,请检查您的设置,并确保您已在中间件中进行了复制,还设置了Splash_URL设置

SPLASH_URL = 'http://194.182.69.110:8050'

DOWNLOADER_MIDDLEWARES = {
    'scrapy_splash.SplashCookiesMiddleware': 723,
    'scrapy_splash.SplashMiddleware': 725,
    'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
}

SPIDER_MIDDLEWARES = {
    'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,
}
您可能应该接受gangabass的回答,因为他已经解决了您的问题,而不需要任何JavaScript处理。答案总是正确的,除非绝对必要,否则不要使用JS

像splash或Selenium这样的东西应该始终是针对特定网站的最后一道防线。例如,在ASP站点上,仅使用Selenium可能比尝试对其请求进行反向工程更有益。也就是说,如果他们不需要大量的数据。硒和Splash不能很好地用于刮削,因此只有在绝对需要时才应使用。如果您分析请求,几乎每个网站都可以在不处理JavaScript的情况下被删除。大多数网站都在使用自己的API,这些API没有文档记录,用于服务于网站的前端

回答有关使用Scrapy shell加载页面的更新问题。您的URL格式不正确或格式不正确。 这是您的URL端点。您可以通过以问号开头向其发送参数。

这是要发送到URL的参数。它以一个字母开头?表示引数的开头,并加上一个符号or&以添加下一个引数。 部门=男性和性别=U&page=1和季节=X

应该有一个?就在负债之前?部门=男性和性别=美国


同样,您可能不需要为此使用Splash。我会留下评论,但还没有足够的代表让我这么做。我添加了答案以反映正在进行的对话。

您能给出一个具体页面的示例以及如何不详细加载该页面吗?def start_requests(self):yield scrapy.Request(url=self.job['start_url',callback=self.parse)不,我指的是您处理的链接<代码>http://......?你会得到什么而不是正确的答案呢?scrapy shell这个链接使用了很多额外的请求。因为scrapy from scratch不会加载它们,所以您可能可以考虑scrapy Splash/Selenium解决方案。或者只需检查页面上完成了哪些api请求,并直接在代码中使用它们。