使用BeautifulSoup
的find_all
方法,其string
论证这一点。
作为一个例子,我在这里解析了一个关于牙买加的地方的维基百科小页面。我寻找所有文字为'牙买加存根'的字符串,但我希望找到一个。当我找到它时,显示文本及其父项。
>>> url = 'https://en.wikipedia.org/wiki/Cassava_Piece'
>>> from bs4 import BeautifulSoup
>>> import requests
>>> page = requests.get(url).text
>>> soup = BeautifulSoup(page, 'lxml')
>>> for item in soup.find_all(string="Jamaica stubs"):
... item
... item.findParent()
...
'Jamaica stubs'
<a href="/wiki/Category:Jamaica_stubs" title="Category:Jamaica stubs">Jamaica stubs</a>
退一步来说,阅读评论之后,一个更好的方式是:
>>> url = 'https://en.wikipedia.org/wiki/Hockey'
>>> from bs4 import BeautifulSoup
>>> import requests
>>> import re
>>> page = requests.get(url).text
>>> soup = BeautifulSoup(page, 'lxml')
>>> for i, item in enumerate(soup.find_all(string=re.compile('women', re.IGNORECASE))):
... i, item.findParent().text[:100]
...
(0, "Women's Bandy World Championships")
(1, "The governing body is the 126-member International Hockey Federation (FIH). Men's field hockey has b")
(2, 'The governing body of international play is the 77-member International Ice Hockey Federation (IIHF)')
(3, "women's")
我的正则表达式使用IGNORECASE
这样既“女性”和“女性”在维基百科中找到文章。我在for
循环中使用了enumerate
,这样我可以对显示的项目进行编号以便于阅读。
感谢您的帮助.. 上述代码不适合我。 'soup.find_all(string =“Jamaica stubs”):'什么都不返回。 – karthi
您最好提供一个您尝试搜索的HTML示例或一些示例。 –
我想我已经在第二个版本中进行了改进。 –