为什么我能';t用Scrapy解析响应?

为什么我能';t用Scrapy解析响应?,scrapy,Scrapy,我对Scrapy是新手,用它从Lazada网站上搜集数据。我收到了200HTTP消息,表示响应已成功返回。尽管xpath查询是正确的,但我无法解析响应。有人能帮我吗?多谢各位 代码如下: import scrapy class LazadaSpider(scrapy.Spider): name = 'lazada' allowed_domains = ['lazada.com.my'] start_urls = ['https://lazada.com.my/catalog/?q=books/

我对Scrapy是新手,用它从Lazada网站上搜集数据。我收到了200HTTP消息,表示响应已成功返回。尽管xpath查询是正确的,但我无法解析响应。有人能帮我吗?多谢各位

代码如下:

import scrapy

class LazadaSpider(scrapy.Spider):
name = 'lazada'
allowed_domains = ['lazada.com.my']
start_urls = ['https://lazada.com.my/catalog/?q=books/']

def parse(self, response):
    all_products = response.xpath('//div[@class="c2prKC"]') 
    print(len(all_products))
结果如图所示

更新:我确实尝试获取存储在javascript中的数据,或者使用selenium模拟人类浏览行为,但是在尝试刮取一次后,我将被阻止验证码,然后我需要等待15分钟,以便第二次刮取。有人能帮我吗


您可以尝试通过终端中的scrapy shell访问web以捕获响应,然后可以使用视图(响应)打开浏览器并设置xpath或css选择器

scrapy shell https://lazada.com.my/catalog/?q=books/  # Access the web through scrapy
view(response)                                        # View cached web on browser

更新
lazada似乎正在使用动态内容加载项目(页面加载后,项目将使用javascript加载和呈现),这意味着您需要另一个模块来爬网,尝试使用selenium、scrapy splash或requests html。

页面加载后,项目将使用javascript加载和呈现

如何从响应中获取项目

data_str = response.css('script')[3].re_first('window.pageData=({.+})')

谢谢你的回复。非常感谢,稍后会尝试。我已经尝试了response.css(“div#root div.ant-row div.ant-row div”),但它仍然给出null,css正确吗?页面加载后,使用javascript呈现ini lazada中的项目,您可以通过从scrapy打印响应文本来检查这一点。要对此类网站进行爬网,您将需要另一个模块来呈现javascript,您可以尝试使用selenium、requests html或scrapy splash,或者您可以在浏览器中检查页面,并尝试从页面本身获取xhr请求,以获取数据源(如果存在)。首先,感谢您的评论。我确实尝试过selenium,但不知何故,我会在尝试了几次后被验证码阻止…文本是从get请求中从JSON加载的。首先非常感谢您的评论,我以前确实尝试过,但是,它只在第一次起作用,然后我会被验证码阻止,你能帮我吗?从上周开始我就一直被卡住。什么样的验证码?一个包含slideri的页面我找不到任何教我绕过Lazadaher中的防刮工具的文章。这里有一篇文章可以绕过slide验证码: