pythonベースのネットワーク爬虫類

887 ワード

pythonのネットワーク爬虫類に基づいて、ニュースサイトの内容を這い取ります.
import re
import time
from html.parser import HTMLParser
from urllib import request


class MyHTMLParser(HTMLParser):

    def handle_data(self, data): #html    
        data = str(data).strip()
        if (data.__len__() == 0):
            return
        mgr = re.match(r'[.\s\S]*[}{;)>/]$', data)
        if(mgr.__str__().__len__()>4):
            return
        print( data)


parser = MyHTMLParser()
with request.urlopen('http://www.bbc.com/news/world-us-canada-44309961') as f:
    data = f.read().decode('utf-8')
regex = '/news/world-.{2,6}-\d{8}'
pat = re.compile(regex)
strurl = re.findall(pat,data)
for strur in strurl:
    time.sleep(1.5)
    with request.urlopen('http://www.bbc.com'+strur) as f:
        data = f.read().decode('utf-8')
    parser.feed(data)