我有一个代码,从ESPN NCAA网站上摘录标题。但我想刮掉整个WEBPAGE。我是编码的新手,所以如果你能帮助刮掉网页真的很感激。我发现很难理解XML标签并识别它们。您是否可以修改此代码以便打印此网页上的所有或大部分内容?谢谢!
from urllib import urlopen
from BeautifulSoup import BeautifulSoup
import smtplib
site = urlopen('http://espn.go.com/college-football').read()
soup = BeautifulSoup(site)
for i in soup.findAll('ul', {'class': 'headlines'}):
for tag in i.findAll('li'):
for a in tag.findAll({'a' : True, 'title' : False}):
print a.text
print a['href']
print "\n"
答案 0 :(得分:0)
您还可以使用html2text:)
作弊答案 1 :(得分:0)
如果您只想提取文本内容,可以使用从HTMLParser
继承的类(来自标准库):
from HTMLParser import HTMLParser
from StringIO import StringIO
class DeHTMLParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.text = StringIO()
def handle_data(self, data):
self.text.write(data.strip())
def text_from_html(html):
parser = DeHTMLParser()
parser.feed(html)
parser.close()
return parser.text.getvalue()
当遇到HTML树中的文本内容时,将调用handle_data
类的DeHTMLParser
函数。这些函数只是将值附加到StringIO
对象(不进行字符串连接以避免创建多个临时对象)。 text_from_html
使用该类从字符串/ unicode获取文本(有关更多信息,请查看HTMLParser
模块文档)。