我是一个初学者,试图构建一个脚本来从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(如果可用)。感谢大家的建议。
添加回答
举报
0/150
提交
取消