如何在无序列表 selenium + python 中抓取信息

我正在做一个网络抓取项目,我试图从亚马逊网站上抓取信息。在网站中,存在包含此类信息的无序列表


Item Weight: 17.2 pounds

Shipping Weight: 17.4 pounds (View shipping rates and policies)

ASIN: B00HC767P6

UPC: 766789717088 885720483186 052000201628

Item model number: mark-1hooi-toop842

Customer Reviews: 4.8 out of 5 stars1,352 customer ratings

Amazon Best Sellers Rank: #514 in Grocery & Gourmet Food (See Top 100 in Grocery & Gourmet Food)

#12 in Sports Drinks

该列表本身没有任何类别。问题是我不想要列表中的所有信息。只有 ASIN 代码。li标签没有任何特定的类或 ID 。这是产品详细信息页面的链接


在使用 selenium 之前,我曾与 BeautifulSoup 合作,这就是我解决问题的方式


asin = str(soup.find('bdi', {'dir': 'ltr'}).find_parent('li'))[38:].split('<')[0]

我现在正在切换到硒。我如何抓取信息。


沧海一幻觉
浏览 158回答 1
1回答

繁华开满天机

您可以使用 css 选择器获取相关的 li 项,如下所示:通过css选择器通过索引查找子元素$(".content > ul > li:nth-child(2)").textContent >>> "Shipping Weight: 33 pounds (View shipping rates and policies)"$(".content > ul > li:nth-child(3)").textContent >>> "ASIN: B07QKN2ZT9"相关的python selenium代码:driver.find_element_by_css_selector(".content > ul > li:nth-child(3)").text.split(": ")[1] >>> 'B07QKN2ZT9'通过 XPATH 查找祖先元素如果 ASIN 并不总是在同一个索引中,那么您可以找到bdi具有文本文本的元素ASIN并找到它,ancestor::li然后获取其文本并提取相关部分。像下面这样:driver.find_element_by_xpath("//bdi[text()='ASIN']/ancestor::li").text.split(": ")[1] >>> 'B07QKN2ZT9'生成 XPATH//<element type>[<attribute type> = <attribute value>]/<descendant>//bdi[text() = 'ASIN'] >>> bdi element with text 'ASIN'//bdi[@dir = 'ltr'] >>> bdi element with dir attribute equals to 'ltr'访问元素的祖先/ancestor::<ancestor element type>//bdi[text()='ASIN']/ancestor::li >>> li//bdi[text()='ASIN']/ancestor::ul >>> ul你可以检查这个作为参考
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python