国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python采集騰訊新聞實例

2020-02-23 05:33:50
字體:
來源:轉載
供稿:網友

目標是把騰訊新聞主頁上所有新聞爬取下來,獲得每一篇新聞的名稱、時間、來源以及正文。

接下來分解目標,一步一步地做。

步驟1:將主頁上所有鏈接爬取出來,寫到文件里。

python在獲取html方面十分方便,寥寥數行代碼就可以實現我們需要的功能。

代碼如下: def getHtml(url):
     page = urllib.urlopen(url)
     html = page.read()
     page.close()
     return html

我們都知道html鏈接的標簽是“a”,鏈接的屬性是“href”,也就是要獲得html中所有tag=a,attrs=href 值。

查閱了資料,一開始我打算用HTMLParser,而且也寫出來了。但是它有一個問題,就是遇到中文字符的時候無法處理。
代碼如下:
 class parser(HTMLParser.HTMLParser):
     def handle_starttag(self, tag, attrs):
             if tag == 'a':
             for attr, value in attrs:
                 if attr == 'href':
                     print value

后來使用了SGMLParser,它就沒有這個問題。
代碼如下:
class URLParser(SGMLParser):      
        def reset(self):
                SGMLParser.reset(self)
                self.urls = []
 
        def start_a(self,attrs):       
                href = [v for k,v in attrs if k=='href']         
                if href:
                        self.urls.extend(href)

SGMLParser針對某個標簽都需要重載它的函數,這里是把所有的鏈接放到該類的urls里。

代碼如下:
lParser = URLParser()#分析器來的
socket = urllib.urlopen("http://news.qq.com/")#打開這個網頁

fout = file('urls.txt', 'w')#要把鏈接寫到這個文件里
lParser.feed(socket.read())#分析啦

reg = 'http://news.qq.com/a/.*'#這個是用來匹配符合條件的鏈接,使用正則表達式匹配
pattern = re.compile(reg)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 郁南县| 延边| 宜丰县| 永清县| 松桃| 治多县| 建始县| 奉新县| 清河县| 龙南县| 荔波县| 武陟县| 梁河县| 精河县| 台东县| 和田县| 榕江县| 西充县| 酉阳| 大渡口区| 班戈县| 仁化县| 青浦区| 大英县| 沁源县| 张家界市| 滁州市| 车险| 同德县| 裕民县| 平塘县| 武陟县| 额尔古纳市| 中牟县| 临沧市| 张家港市| 驻马店市| 苏尼特左旗| 许昌县| 保靖县| 宁晋县|