首页 > 解决方案 > 如何根据 Scrapy 中的部分自定义属性名称检索对象?

问题描述

我有以下元素:

<div data-offer="MTs3O29sZG5hdnkuY29tOzQxMDYy" class="Offer__Card-sc-14rx0hy-0 iBdrTi"></div>

我需要用scrapy找到它,但我有两个并发症。该类可以更改,因此它不会具有该值。几乎不在桌子上。

第二个问题是data-offer值可能在 data-offer、data-offer-promo 和 data-offer-double 之间变化

您知道如何根据部分属性名称找到这些元素吗?就像带给我所有具有自定义属性“data-offer*”的东西,或者以它开头的所有东西也可以,但不是值,属性名称。

我试过这个没有成功

 response.css('[div::attr^="data-offer"]')

标签: pythonweb-scrapingscrapy

解决方案


您可以使用 beautifulSoup 找到这些元素。这将找到第一个具有“data-offer”属性的 div 元素:

soup = BeautifulSoup(response.body, 'lxml')
results = soup.find("div", {"data-offer" : True})

您还可以获得一个包含所有具有相同条件的元素的列表:

soup = BeautifulSoup(response.body, 'lxml')
results = soup.find_all("div", {"data-offer" : True})

推荐阅读