【发布时间】:2020-07-29 07:37:23
【问题描述】:
我正在做一个新项目,我尝试爬取link
我做了什么
首先,我尝试在我的 shell 中获取一些信息,以便正确解决问题。
我在 shell 中编写的代码:response.xpath(//div[@class="product-wrapper col-xs-6 col-md-4"]/text()').get()
使用这段代码我只想打印出产品的标题,但我得到了一些非常奇怪的输出:
我的第一个问题是 robots.txt 的问题,所以我更改了 settings.py 用户代理,现在它可以工作了,我想我们可以确定错误来自该更改,对吧?如果我错了,请纠正我。
经过一番研究,我发现这来自错误的格式,您可以通过以下方式确定此错误:
response.xpath('normalize-space(//div[@class="product-wrapper col-xs-6 col-md-4"]/text())') 但这对我没有任何帮助。
我现在能做什么?
【问题讨论】:
-
看起来您的 xpath 选择器并没有为您提供正确的数据。输出在那里没有任何意义。 normalize-space 函数适用于开始和结束间距,而不是 \n\t 具体。
-
即使我尝试使用
response.xpath('//div[@class="delivery-status"]/text()').get()抓取类似<div class="delivery-status">的内容,我也会得到如上图所示的输出 -
嘿@AaronS 如果我在查找正确的 html 标记时遇到问题该怎么办?信息的存储方式与我之前的项目完全不同。在我的 html-tool(Browser Key F12) 中,我以为我找到了包含页面中所有信息的标签,就像我之前的 productlink clearfix 一样,但我总是得到 [] 作为输出或类似的东西.. 我现在有点沮丧..
-
我认为任何执行此类脚本的人都会遇到无法获得他们想要的项目作为输出的情况。我认为注意 html 标签和 class 属性在 HTML 树中的位置会给您带来很多好处。我可以立即告诉您您没有访问正确的文本,因为 div 不包含文本,而是 div/a/ 包含文本。有时,scrapy 的响应与 HTML 不同,这完全取决于网站的组成,是否涉及 javascript 等。或者阻止爬虫获取信息的措施。
-
您应该在浏览器中检查 HTML 树以找出文本所在的位置或属性值的位置。在考虑 XPATH 选择器时,我一直在检查网站的 HTML。
标签: python python-3.x web-scraping scrapy