我想使用BeautifulSoup从网站中提取内容(http://brooklynexposed.com/events/)。正如我可以运行下面的代码问题的一个例子:BeautifulSoup没有提取所有的HTML(自动删除大部分页面的html)
import urllib
import bs4 as BeautifulSoup
url = 'http://brooklynexposed.com/events/'
html = urllib.urlopen(url).read()
soup = BeautifulSoup.BeautifulSoup(html)
print soup.prettify().encode('utf-8')
输出似乎切断HTML如下:
<li class="event">
9:00pm - 11:00pm
<br/>
<a href="http://brooklynexposed.com/events/entry/5432/2013-07-16">
Comedy Sh
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</body>
</html>
它沿着切断上市名称为喜剧表演与所有的HTML,直到最后的结束标签。大多数的html被自动删除。我在很多网站上注意到类似的事情,如果页面太长,BeautifulSoup无法解析整个页面,只是删除文本。有没有人有这个解决方案?如果BeautifulSoup无法处理这些页面,是否有人知道其他类似于prettify()的函数库?
你的代码对我来说很好。如果网络传输在那个时间点被中断(所以你只能装载到“喜剧Sh”),那么HTML解析器将“关闭”所有仍然打开的标签,并且你确切地看到你得到了什么。 –
对我而言,整个内容都在那里。从您的代码开始创建'soup'对象:'>>> len(unicode(soup))'''107578'您使用的是哪个版本的BS?我正在使用4.2.0。 –
有趣的是,我在Python 2.7中使用4.2.1。但是,当我使用3.2它似乎工作。它不可能是超时问题,因为如果我将原始HTML打印到一个文件中,那么所有文本都会出现。有关2.7解决方案的任何其他想法?否则,是时候开始移植我的代码了。 – user2540231