国产探花免费观看_亚洲丰满少妇自慰呻吟_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)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 万全县| 甘德县| 嵊泗县| 靖安县| 樟树市| 康定县| 岢岚县| 金华市| 甘谷县| 长寿区| 历史| 永济市| 崇义县| 永川市| 炉霍县| 雷州市| 图们市| 朝阳县| 大城县| 若尔盖县| 牟定县| 泸溪县| 唐海县| 鱼台县| 中卫市| 抚顺市| 武定县| 陆良县| 西藏| 台江县| 大竹县| 南和县| 徐水县| 乌鲁木齐县| 高邑县| 开鲁县| 梁平县| 台东市| 阳山县| 游戏| 临城县|