gpt4 book ai didi

python - 要抓取的网站具有不同的类名

转载 作者:太空宇宙 更新时间:2023-11-03 14:38:43 27 4
gpt4 key购买 nike

我正在尝试抓取产品的标题和价格。我面临一个问题,网站的类别各不相同。这是一个例子,

<a class="G-ab" href="thewebsite.com"><div class="G-l"><div class="G-m">Product Name</div></div><div class="G-k"><div>S$230</div><div>Product Description</div><div>Used</div></div></a>

当我使用另一台电脑时,它会显示这个,

<a class="K-ab" href="thewebsite.com"><div class="K-l"><div class="K-m">Product Name</div></div><div class="K-k"><div>S$230</div><div>Product Description</div><div>Used</div></div></a>

我意识到他们将类(class)更改为随机字母。我目前正在使用 BeautifulSoup4 和请求库。有没有什么方法可以上课,除了想上一整堂长的“if-elif”课?我要抓取的网站是 carousell.com我目前正在使用 lxml 解析器,如果这有任何帮助的话。感谢您的宝贵时间。

最佳答案

BeautifulSoup 允许您使用 regex as the filter .在您的站点中,a 标记的类名称中包含 -ab

你可以使用

soup.find_all('a',class_=re.compile("-ab"))

但在某些情况下,类名中不需要任何通用术语,您可以检查是否可以尝试在类名中使用方法 Going back and forth, Going sideways , Going downGoing up文档的各个部分以某种方式唯一地标识您需要的元素,而不依赖于类名。

回到你的问题

html="""
<a class="G-ab" href="thewebsite.com"><div class="G-l"><div class="G-m">Product Name</div></div><div class="G-k"><div>S$230</div><div>Product Description</div><div>Used</div></div></a>
<a class="K-ab" href="thewebsite.com"><div class="K-l"><div class="K-m">Product Name</div></div><div class="K-k"><div>S$230</div><div>Product Description</div><div>Used</div></div></a>
"""
from bs4 import BeautifulSoup
import re
soup=BeautifulSoup(html,'html.parser')
a_links=soup.find_all('a',class_=re.compile("-ab"))
print(a_links)

输出:

[<a class="G-ab" href="thewebsite.com"><div class="G-l"><div class="G-m">Product Name</div></div><div class="G-k"><div>S$230</div><div>Product Description</div><div>Used</div></div></a>, <a class="K-ab" href="thewebsite.com"><div class="K-l"><div class="K-m">Product Name</div></div><div class="K-k"><div>S$230</div><div>Product Description</div><div>Used</div></div></a>]

两个包含-ab的不同类名的a标签都被选中。

关于python - 要抓取的网站具有不同的类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55199526/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com