1. 程式人生 > >Python爬蟲-爬取百度貼吧

Python爬蟲-爬取百度貼吧

方法 eba style name urlopen for pri url pen

爬取百度貼吧

=====================

技術分享圖片

=====

結果示例:

技術分享圖片

=====================================

 1 ‘‘‘
 2 爬去百度貼吧-張繼科吧
 3 1. 張繼科吧主頁是  https://tieba.baidu.com/f?kw=張繼科
 4 2. 進去之後,貼吧有很多頁
 5     第一頁網址:https://tieba.baidu.com/f?kw=張繼科&ie=utf-8&pn=0
 6     第二頁網址:https://tieba.baidu.com/f?kw=張繼科&ie=utf-8&pn=50
 7     第三頁網址:https://tieba.baidu.com/f?kw=張繼科&ie=utf-8&pn=100
8 第四頁網址:https://tieba.baidu.com/f?kw=張繼科&ie=utf-8&pn=150 9 第五頁網址:https://tieba.baidu.com/f?kw=張繼科&ie=utf-8&pn=200 10 3. 由上面網址可以找到規律,每一頁只有後面數字不同,且數字應該是 (頁數-1)x50 11 12 解決方法: 13 1. 準備構建參數字典 14 字典包含三部分,kw,ie,pn 15 2. 使用parse構建完整url 16 3. 使用for循環下載 17 ‘‘‘ 18 19 from urllib import request, parse
20 21 22 23 if __name__ == __main__: 24 25 #1. 準備構建參數字典 26 qs = { 27 "kw": "張繼科", 28 "ie": "utf-8", 29 "pn": 0 30 } 31 #2. 使用parse構建完整url 32 # 假定只需要前10頁 33 urls = [] 34 baseurl = "https://tieba.baidu.com/f?" 35 for i in range(10): 36 # 構建新的qs
37 pn = i * 50 38 qs[pn] = str(pn) 39 # 把qs編碼後和基礎url進行拼接 40 # 拼接完畢後裝入url列表中 41 urls.append( baseurl + parse.urlencode(qs) ) 42 43 print(urls) 44 #3. 使用for循環下載 45 46 for url in urls: 47 rsp = request.urlopen(url) 48 html = rsp.read().decode("utf-8") 49 print(url) 50 print(html) 51 52 ‘‘‘ 53 待完善: 54 1. 把每個抓到的內容保存到文件中,文件後綴是html 55 ‘‘‘

Python爬蟲-爬取百度貼吧