贴吧小爬虫之爬取源码
生活随笔
收集整理的這篇文章主要介紹了
贴吧小爬虫之爬取源码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在做爬蟲工作之前,永遠先做好筆記:
確定要爬取的url,爬取的具體內容是什么,用什么形式展現爬取到的內容。
博客的標題大家也看到了,爬取的是貼吧的源碼,也就是說任何貼吧的源碼都能爬。
不光第一頁還要爬,第二頁第三頁……都要爬。
確定了上面的內容,那就可以開始代碼的編寫了。
我最近在玩穿越火線,那就爬穿越火線吧:
首先獲取穿越火線貼吧的標準url:
"https://tieba.baidu.com/f?kw=穿越火線" 分析頁碼不同時url的區別: 第一頁:"https://tieba.baidu.com/f?kw=穿越火線&ie=utf-8&pn=0" 第二頁:"https://tieba.baidu.com/f?kw=穿越火線&ie=utf-8&pn=50" 第三頁:"https://tieba.baidu.com/f?kw=穿越火線&ie=utf-8&pn=100" 對比分析,我們可以知道pn的值等于(頁碼-1)*50。 那么收集headers信息,就可以開始了: import requests class TiebaSpider: ? ? def __init__(self,tieba_name):? ? ? ? #實現能夠爬取任意貼吧的功能,所以貼吧的名字需要做一個變量出來。 ? ? ? ? self.tieba_name=tieba_name ? ? ? ??self.url="https://tieba.baidu.com/f?kw="+tieba_name+"&ie=utf-8&pn={}" ? ? ? ??self.headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6814.400QQBrowser/10.3.3005.400"}? ? def get_url_list(self):#構造url列表 ? ? ? ??url_list=[] ? ? ? ??for i in range(3):? #能夠爬取三頁,i是0,1,2。 ? ? ? ??? ? url_list.append(self.url.format(i*50)) ? ??? ??return url_list
? ??def parse_url(self,url):#發送請求,獲取響應 ? ??? ??response=requests.get(url,headers=self.headers) ? ??? ??return response.content.decode()? #顯示源碼
? ??def save_html(self,html_str,page_num):#保存html字符串到文件 ? ??? ??file_path="{}-第{}頁.html".format(self.tieba_name,page_num) ? ??? ??with open(file_path,"w",encoding="utf-8") as f:? #創建文件。指定unicode編碼為utf-8,很關鍵的一步。 ? ? ? ? f.write(html_str)
? ??def run(self):#實現主要邏輯 ? ??#1.構造url列表 ? ??? ??url_list=self.get_url_list() ? ??#2.遍歷,發送請求,獲取相應 ? ??? ??for url in url_list: ? ??? ??? ??html_str=self.parse_url(url)? #把源碼存儲到html_str變量之中。 ? ??#3.保存html字符串 ? ??? ??? ??page_num=url_list.index(url)+1? ? ?#用index檢查是否存在url,并報出索引位置,是從0開始的。 ? ??? ??? ??self.save_html(html_str,page_num) ? ??? ??? ??print(url,"爬取成功!")
if __name__=="__main__": ? ??tieba_spider=TiebaSpider("穿越火線")? ? ? #建立一個穿越火線吧的實例,這樣做可以爬任意的貼吧。 ? ??tieba_spider.run()? 敲爬蟲代碼的時候,思緒一定要清晰,先打好run()的主要功能,再去一一分別實現出來
轉載于:https://www.cnblogs.com/Masterpaopao/p/10246296.html
總結
以上是生活随笔為你收集整理的贴吧小爬虫之爬取源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flask-SQLAlchemy插件
- 下一篇: 几何与代数(1)知识框架(出题根据)