努力找到正确的HTMLtag

2024-10-02 08:26:48 发布

您现在位置:Python中文网/ 问答频道 /正文

任务

编写一个以.csv格式输出:标题、ArtikerNummer、价格、交付状态的爬虫程序

https://www.karton.eu/einwellig-ab-100-mm

问题 很难弄清楚,网页上的哪个html标签包含了我需要的信息。 例如:<small>Artikelnummer:&nbsp;001</small> 如何收集001? 还有几个标签,我不清楚如何获取这些标签的信息


Tags: csvhttps程序信息标题状态www格式
2条回答

首先,您将选择所需文本所在的节点:

response.xpath('//div[@class="delivery-status"]/small/text()')

现在,为了只捕获部分返回,可以使用正则表达式。幸运的是Scrapy selectors支持内置正则表达式。所以你可以这样使用:

response.xpath('//div[@class="delivery-status"]/small/text()').re_first(r'\d+')

或对于包含所有结果的列表:

response.xpath('//div[@class="delivery-status"]/small/text()').re(r'\d+')

每个艺人都在里面

response.xpath('//div[@class="delivery-status"]/small/text()')

就是他们坐的地方。您可能会对<div class="signal_image status-2"> <i>感到困惑,它位于具有类交付状态的div的下游

根据HTML的结构,您可能希望选择每张卡片并执行类似的操作

card = response.xpath('//div[@class="text-center artikelbox"]')
for a in card:
    a.xpath('.//div[@class="delivery-status"]/small/text()').re_first(r'\d+')

这里regex\d+只按顺序搜索数字。我们之所以使用r“”,是因为\是一个转义字符,当它位于字符串中时无法识别,但使用r,我们将字符串视为原始字符串,它识别\字符

正则表达式是获取文本中比字符串方法更复杂的特定部分的好方法。对它有一个粗略的了解是很有用的,这样你就可以尝试一些基本的方法,看看如何得到你想要的

资源

Regex and digits

Re Module | Python Module of the Week

Community StackOverflow Answer for Regex

相关问题 更多 >

    热门问题