Python 爬行后的刮擦输出

Python 爬行后的刮擦输出,python,python-3.x,web-scraping,scrapy,Python,Python 3.x,Web Scraping,Scrapy,我在做一个新项目,我试着爬 我所做的 首先,我试着在我的shell中获取一些信息,以便正确地解决问题。 我在shell中编写的代码:response.xpath(//div[@class=“product wrapper col-xs-6 col-md-4”]/text()).get() 有了这段代码,我只想打印出产品的标题,但我得到了一些非常奇怪的输出: 我的第一个问题是robots.txt,所以我更改了settings.py用户代理,现在它可以工作了,我想我们可以确定错误来自于这个更改,对

我在做一个新项目,我试着爬

我所做的

首先,我试着在我的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
。以下是我对它的看法:

import requests
from lxml import html
html.fromstring(requests.get("https://www.karton.eu/einwellig-ab-100-mm").content).xpath("//*[@class='title']/a/text()")
代码所做的是获取请求页面的
html
内容,将其解析为字符串并应用
XPath
选择器,该选择器搜索类
title
的所有项,向下走到锚定标记
a
并提取文本值

上述代码输出:


['113x113x100毫米艾因韦利格卡尔顿','140x140x100毫米艾因韦利格卡尔顿','150x100x80毫米艾因韦利格卡尔顿','150x150x150毫米艾因韦利格卡尔顿','170x150x100毫米艾因韦利格卡尔顿','190x180x100毫米艾因韦利格卡尔顿']

看起来xpath选择器没有为您提供正确的数据。输出中没有任何有意义的内容。normalize space函数在开始和结束间隔上工作,而不是\n\t。即使我尝试使用
response.xpath('//div[@class=“delivery status”]/text())对
之类的内容进行爬网。get()
我得到了如上图所示的输出hey@AaronS如果找不到正确的html标记,我该怎么办?信息的存储方式与以前的项目完全不同。在我的html工具(浏览器键F12)中,我想我找到了标签,它包含了页面中的所有信息,就像我以前的productlink clearfix一样,但我总是将[]作为输出或类似的东西。。我现在有点沮丧..我想任何做这种脚本的人都会接触到没有得到他们想要的输出。我认为注意html标记和类属性在html树中的位置会给您带来很多好处。我可以马上看出您没有访问正确的文本,因为div不包含文本,而是div/a/包含了文本。有时scrapy的响应与HTML不同,这完全取决于网站的组成、是否包含javascript等,或者阻止Scraper获取信息的措施。你应该在浏览器中检查HTML树,找出文本所在的位置或属性值所在的位置。在考虑XPATH选择器时,我一直在检查HTML站点。你能再给我解释一下代码片段吗?我想我现在明白了。a代表htmltag所在的子类,对吗?如何访问名为small的html标记<代码>ArtikerNummer:001PS:我已经拿到了,nvmd:)