python - BeautifulSoup 不会删除 i 元素

标签 python beautifulsoup web-crawler

我正在学习如何解析和操作html使用beautiful soup像这样:

from lxml.html import parse
import urllib2
from urllib2 import urlopen
from BeautifulSoup import BeautifulSoup

url = 'some-url-here'
req = urllib2.Request(url, headers={'User-Agent' : "Magic Browser"}) 
parsed = urllib2.urlopen( req )
soup = BeautifulSoup(parsed)

for elem in soup.findAll(['script', 'style', 'i']):
    elem.extract()

for main_body in soup.findAll("div", {"role" : "main"}):
    print main_body.getText(separator=u' ')

结果包含<i>标签,我不知道如何删除它们。如何实现这一点?为什么上面的代码没有删除唯一的标签?

最佳答案

问题实际上是您正在使用已弃用的Beautifulsoup3,安装 bs4一切都会正常进行:

In [10]: import urllib2
In [11]: from bs4 import BeautifulSoup # bs4

In [12]: url = 'https://www.gwr.com/'

In [13]: req = urllib2.Request(url, headers={'User-Agent': "Magic Browser"})

In [14]: parsed = urllib2.urlopen(req)

In [15]: soup = BeautifulSoup(parsed,"html.parser")

In [16]: tags = soup.find_all(['script','style','i'])

In [17]: print(len(tags))
25

In [18]: for elem in tags:
   ....:         elem.extract()
   ....:     

In [19]: assert len(soup.find_all(['script','style','i'])) == 0

In [20]: 

关于python - BeautifulSoup 不会删除 i 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38684392/

相关文章:

java - 如何使用 HtmlUnit 显示所有 AJAX 请求

python - 根据自定义字典对字符串进行分词

python - 错误解包需要长度为 16 的字符串参数

python - 使用 Beautifulsoup 抓取多个网站

python-3.x - 如何构建 Etherscan 网络爬虫?

Python 抓取空标签

javascript - PhantomJS 使用太多线程

python - 如何从大多数网站获取 Twitter 链接 - Python

python - 您可以设置依赖于另一个字典条目的字典值吗?

python - 如何避免爬虫中的重复