繁体   English   中英

如何从网页上抓取尸体?

[英]How to scrape the body from a webpage?

我有一个代码可以从ESPN NCAA网站提取标题。 但是我想刮整个网页。 我是编码方面的新手,如果能帮助您抓取网页,我们将不胜感激。 我发现很难理解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"

您也可以通过使用html2text作弊:)

如果只想提取文本内容,则可以使用从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树中遇到文本内容时,将调用DeHTMLParser类的handle_data函数。 这些函数只是将值附加到StringIO对象(不进行字符串连接以避免创建多个临时对象)。 text_from_html使用该类从字符串/ unicode获取文本(有关更多信息,请text_from_html HTMLParser模块文档)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM