【问题标题】:Python 2 Beautiful Soup, get text from all tagsPython 2 Beautiful Soup,从所有标签中获取文本
【发布时间】:2019-01-22 05:30:06
【问题描述】:

试图从所有具有task-topic-deprecated 类的标签中获取文本,但我似乎只能得到一个。

不是 BeautifulSoup get_text from find_all 的重复 - 此问题使用多个类名,因此工作语法略有不同,class_attrs={'class':' 相对

源页面: https://developer.apple.com/documentation/cfnetwork?language=objc

输出将是上面页面上被删除的任何字符串:

CFFTPCreateParsedResourceListing
kCFFTPResourceGroup
...etc

find_next() 似乎没有像我期望的那样移动到下一个项目,而是打印出我已经拥有的文本。

page = requests.get("https://developer.apple.com/documentation/cfnetwork?language=objc")
soup = BeautifulSoup(page.content, 'html.parser')

aRow = soup.find('a', attrs={'class':'task-topic-deprecated has-adjacent-element symbol-name'}).get_text()
print aRow
bRow = soup.find('a', attrs={'class':'task-topic-deprecated has-adjacent-element symbol-name'}).find_next().get_text()
print bRow
cRow = soup.find('a', attrs={'class':'task-topic-deprecated has-adjacent-element symbol-name'}).find_next().find_next().get_text()
print cRow


CFFTPCreateParsedResourceListing
CFFTPCreateParsedResourceListing
CFFTPCreateParsedResourceListing

还尝试从我在 Stack Overflow 上找到的各种内容中将其放入一个循环中,但它似乎仍然只能抓取 1 项。

也尝试使用 xPath,但这不会抓取任何内容并打印出一个空白列表

tree = html.fromstring(page.content)
allItems = tree.xpath('//a[@class="task-topic-deprecated has-adjacent-element symbol-name"]/text()')
print allItems 

【问题讨论】:

    标签: python parsing beautifulsoup python-2.x


    【解决方案1】:

    我认为你做错了而不是find 你可以使用find_all 方法来获得结果。

    for i in soup.find_all('a', class_='task-topic-deprecated has-adjacent-element symbol-name'):
        print i.get_text()
    

    这可能会有所帮助

    【讨论】:

    • 这行得通,谢谢。我确定我试过了,但被 Tracebacks 击中。考虑到它们在版本之间不断变化,find_next、findNext、nextSibling 等,我可能搞砸了这些方法。在这种情况下,为重复道歉!
    猜你喜欢
    • 2016-07-06
    • 1970-01-01
    • 2021-12-28
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    相关资源
    最近更新 更多