作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我写了一个脚本来捕捉维基百科上几个国家的独立日期。
例如哈萨克斯坦:
URL_QS = 'https://en.wikipedia.org/wiki/Kazakhstan'
r = requests.get(URL_QS)
soup = BeautifulSoup(r.text, 'lxml')
# Only keep the infobox (top right)
infobox = soup.find("table", class_="infobox geography vcard")
if infobox:
formation = infobox.find_next(text = re.compile("Formation"))
if formation:
independence = formation.find_next(text = re.compile("independence"))
if independence:
independ_date = independence.find_next("td").text
else:
independence = formation.find_next(text = re.compile("Independence"))
if independence:
independ_date = independence.find_next("td").text
print(independ_date)
我有以下输出:
Almaty
此输出未本地化在信息框中,而是在文本之后。这是因为 "formation.find_next(text = re.compile("independence"))" 在信息框之外发现了一些东西,但我不明白为什么研究不应该只在信息框中进行?我怎样才能只搜索这个字段?
预先感谢您的帮助!
最佳答案
It's because "formation.find_next(text = re.compile("independence"))" found something outside of the infobox
将 .extract()
添加到您的 soup.find()
以仅在 infobox geography vcard
元素内搜索。
infobox = soup.find("table", class_="infobox geography vcard").extract()
关于Python 和 Beautifulsoup : Searching only in a certain class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47441585/
我是一名优秀的程序员,十分优秀!