【问题标题】:Beautiful Soup Grabbing next element美丽的汤抓住下一个元素
【发布时间】:2017-03-22 19:16:30
【问题描述】:

我正在尝试提取选举选举人票以检查它何时更新。但困难的部分是所有类在每次刷新时都会发生变化。我想搜索文本Trump,然后找到下一个元素,即计数。

我可以通过搜索字符串Trump找到元素:

import requests
import re
from bs4 import BeautifulSoup
url = "https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=who+is+winning+the+presidential+election&eob=enn/p//1/0///////////"
r = requests.get(url)
soup = BeautifulSoup(r.content)
elm = soup.find(text='Trump')
print elm.text

我找到了带有 lm = soup.find(text='Trump') 的 Trump 元素,但我不知道如何抓取该元素之后的下一个元素。

【问题讨论】:

    标签: python beautifulsoup python-requests


    【解决方案1】:

    您当前的代码正在寻找与该文本完全匹配的节点。试试这个:

    soup.body.findAll(text=re.compile('Trump'))
    > ["Donald Trump is US president-elect in 'America's Brexit' as Hillary Clinton concedes election - live", 'Donald Trump ', 'Donald Trump wins presidential election, plunging US into uncertain future'... ]
    

    您将寻找包含目标文本的正则表达式。您可以细化您要查找的正则表达式,例如:

    b.body.findAll(text=re.compile('Trump wins .+? uncertain future'))
    > ['Donald Trump wins presidential election, plunging US into uncertain future']
    

    【讨论】:

    • 我要抓取下一个元素。已经抢到了特朗普元素,我只想抢下一个。
    • 我想你在找.next_sibling.next_element: crummy.com/software/BeautifulSoup/bs4/doc/#going-back-and-forth
    • 那行得通(在另一个网站上测试,因为谷歌网址发生了变化),你能改变你的答案,这样我就可以接受了吗?
    猜你喜欢
    • 2021-08-13
    • 1970-01-01
    • 2021-05-03
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多