【问题标题】:Python Beautifulsoup get_text() not getting all textPython Beautifulsoup get_text()没有获取所有文本
【发布时间】:2015-09-19 17:00:03
【问题描述】:

我正在尝试使用 beautifulsoup get_text() 方法从 html 标记中获取所有文本。我使用 Python 2.7 和 Beautifulsoup 4.4.0。它在大多数情况下都有效。但是,这种方法有时只能从标签中获取第一段。我不知道为什么。请看下面的例子。

from bs4 import BeautifulSoup
import urllib2

job_url = "http://www.indeed.com/viewjob?jk=0f5592c8191a21af"
site = urllib2.urlopen(job_url).read()
soup = BeautifulSoup(site, "html.parser")
text = soup.find("span", {"class": "summary"}).get_text()
print text

我想从这个确实的职位描述中获取所有内容。基本上,我想在 .但是,使用上面的代码,我只能得到“请注意,这是一份为期 1 年的合同作业。候选人在背景调查和药物测试完成之前不能开始作业”。为什么我会丢失其余的文字?如何在不指定子标签的情况下从此标签中获取所有文本?

非常感谢。

【问题讨论】:

    标签: python html python-2.7 beautifulsoup urllib2


    【解决方案1】:

    尝试使用不同的解析器,例如 lxml 解析器,而不是 html.parser 解析器:

    替换:

    soup = BeautifulSoup(site, "html.parser")
    

    与:

    soup = BeautifulSoup(site, "lxml")
    

    确保首先安装了 lxml 解析器: http://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-a-parser

    【讨论】:

    • 谢谢乔,它有效!为什么 lxml 解析器比 html.parser 更适合这个任务?有什么区别?
    • @alecxe 两个解析器也适用于我。我使用的 html.parser 可能已经过时了?
    • @ShengjieZhang 不,只是不同的解析器对不可靠和损坏的 HTML 标签的解释不同,请参阅:crummy.com/software/BeautifulSoup/bs4/doc/…
    • @alecxe 谢谢!很棒的资源。我会选择 html5lib。
    猜你喜欢
    • 2020-05-14
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    相关资源
    最近更新 更多