为了账号安全,请及时绑定邮箱和手机立即绑定

自Linux Mint Upgrade Python 2.7.4起,Beautiful Soup

自Linux Mint Upgrade Python 2.7.4起,Beautiful Soup

LEATH 2021-03-16 17:23:39
我是一个初学者,试图构建一个脚本来从Gutenberg项目中提取电子书,将其分为章节和段落,然后对文本进行一些基本分析。我尽力能够可靠地找到章节标题,因为它们方便地位于“ h2”标签中。但是,由于从Linux Mint Nadia升级到Olivia,因此仅检测到前几个标签。Reddit上的一些优秀人士一直在尝试提供帮助,但我们走到了穷途末路。但是,我们进行的诊断可能很有用。>>> import bs4>>> from urllib import urlopen>>> url = "http://www.gutenberg.org/files/82/82-h/82-h.htm">>> newtext = urlopen(url).read()>>> soup = bs4.BeautifulSoup(newtext)>>> def chap_list (htmlbook):    print 'A:', len(htmlbook)    soup = bs4.BeautifulSoup(htmlbook)    print 'B:', len(soup)    chapters = soup('h2')    print 'C:', chapters    return>>> chap_list(newtext)对我来说,这返回:A: 1317420B: 2C: [<h2>      A ROMANCE    </h2>, <h2>      By Sir Walter Scott    </h2>, <h2>      INTRODUCTION TO IVANHOE.    </h2>, <h2>      DEDICATORY EPISTLE    </h2>]同样,现在,当我简单地调用如上定义的汤对象时,仅返回书的第一部分-直到“住在约克城堡门”。我确定这曾经返回整个文本。因此,我的评估是BS不再提取全文。版本:Python 2.74 BeautifulSoup 4.2.1 lxml 3.1.0在一切正常的情况下,我不知道所使用的版本。尝试在Python 3.3下运行可获得相同的结果。我需要使用2.7,因为稍后我需要nltk。谁能帮我重新开始这项工作?
查看完整描述

3 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

Lazy1,您将其评估与解析器联系在一起。soup = bs4.BeautifulSoup(htmlbook, 'lxml')给出截短的版本,而soup = bs4.BeautifulSoup(htmlbook, 'html.parser')绝招。也许我以前的设置中没有安装lxml,所以默认将其设置为html.parser,但是lxml现在会自动安装,Reddit中有人说BS4使用lxml(如果可用)。感谢大家的建议。

查看完整回答
反对 回复 2021-03-31
  • 3 回答
  • 0 关注
  • 180 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信