我是一個初學者,試圖構建一個腳本來從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
提交
取消