爬取豆瓣网电视剧数据(共1500条)
生活随笔
收集整理的這篇文章主要介紹了
爬取豆瓣网电视剧数据(共1500条)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們現在爬取電視劇中的美劇、國產劇、港劇三個分類的所有數據,共1500條
1、打開開發者工具,找到第一頁對應的json數據。(尋找時忽略所有的js,css,ico文件)
2、在第一頁的包含電視劇數據的包中找到請求的url
3、為了觀察將url得更清晰,我們接著點擊“加載更多”打開下一頁,進行抓包
展示一下請求json的結構
下面對比一下兩個頁面的url
可以看到有page_limit,page_start兩個參數值得研究
page_limit指的是煤業展示的電視劇數量
page_start表示的是每頁展示的電視劇起始編號
研究到這里,我們就可以開始構造不斷請求的url了,每當我們爬取下一頁數據時,讓page_start += 20即可
構造url:
先寫一個模板url:https://movie.douban.com/j/search_subjects?type=tv&tag=%E5%9B%BD%E4%BA%A7%E5%89%A7&sort=recommend&page_limit=20&page_start={}
在不斷爬取的過程中用format函數將page_start參數填進去即可
下面給出爬取美劇、國產劇、港劇三個分類數據的代碼
import requests import jsonclass DoubanSpider:def __init__(self):self.url_temp_list = [{"url_temp": "https://movie.douban.com/j/search_subjects?type=tv&tag=%E5%9B%BD%E4%BA%A7%E5%89%A7&sort=recommend&page_limit=20&page_start={}","country": "CN"},{"url_temp": "https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start={}","country": "US"},{"url_temp": "https://movie.douban.com/j/search_subjects?type=tv&tag=%E6%B8%AF%E5%89%A7&sort=recommend&page_limit=20&page_start={}","country": "HONGKONG"}]self.headers = {"User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Mobile Safari/537.36"}def get_json_str(self, url):res = requests.get(url, headers=self.headers)return res.content.decode()# 此函數將json字符串轉換為python數據類型dictdef get_content_list(self, json_str):dict_data = json.loads(json_str) # 轉換完成后,dict_data是字典print("type(dict_data):", type(dict_data))content_list = dict_data["subjects"] # 還是字典return content_list # 返回的是一個字典,鍵是0,1,2,,,,19def save_content_list(self, content_list, country):with open("doubanMultiArea.txt", "a", encoding="utf-8") as fp:for content in content_list:content["country"] = country # 由于爬取的數據沒有分類,手動加上fp.write(json.dumps(content, ensure_ascii=False))fp.write("\n")print("保存成功")def run(self):# 一次for循環爬取一個類別所有數據for url_temp in self.url_temp_list:page_start = 0while True:url = url_temp["url_temp"].format(page_start) # 構造下一頁的urljson_str = self.get_json_str(url)content_list = self.get_content_list(json_str)self.save_content_list(content_list, url_temp["country"])if len(content_list) < 20:breakpage_start += 20def main():spider = DoubanSpider()spider.run()if __name__ == '__main__':main()效果圖:
總結
以上是生活随笔為你收集整理的爬取豆瓣网电视剧数据(共1500条)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 善用佳软站长:畅谈大数据时代的知识管理
- 下一篇: java 身份证地址提取籍贯_excel