使用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示例或一些示例。 –
我想我已經在第二個版本中進行了改進。 –