日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

爬取豆瓣网电视剧数据(共1500条)

發(fā)布時間:2024/8/1 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬取豆瓣网电视剧数据(共1500条) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


我們現(xiàn)在爬取電視劇中的美劇、國產(chǎn)劇、港劇三個分類的所有數(shù)據(jù),共1500條

1、打開開發(fā)者工具,找到第一頁對應(yīng)的json數(shù)據(jù)。(尋找時忽略所有的js,css,ico文件)

2、在第一頁的包含電視劇數(shù)據(jù)的包中找到請求的url

3、為了觀察將url得更清晰,我們接著點擊“加載更多”打開下一頁,進行抓包

展示一下請求json的結(jié)構(gòu)

下面對比一下兩個頁面的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=0 第二頁: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=20

可以看到有page_limit,page_start兩個參數(shù)值得研究
page_limit指的是煤業(yè)展示的電視劇數(shù)量
page_start表示的是每頁展示的電視劇起始編號
研究到這里,我們就可以開始構(gòu)造不斷請求的url了,每當我們爬取下一頁數(shù)據(jù)時,讓page_start += 20即可

構(gòu)造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函數(shù)將page_start參數(shù)填進去即可

下面給出爬取美劇、國產(chǎn)劇、港劇三個分類數(shù)據(jù)的代碼

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()# 此函數(shù)將json字符串轉(zhuǎn)換為python數(shù)據(jù)類型dictdef get_content_list(self, json_str):dict_data = json.loads(json_str) # 轉(zhuǎn)換完成后,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 # 由于爬取的數(shù)據(jù)沒有分類,手動加上fp.write(json.dumps(content, ensure_ascii=False))fp.write("\n")print("保存成功")def run(self):# 一次for循環(huán)爬取一個類別所有數(shù)據(jù)for url_temp in self.url_temp_list:page_start = 0while True:url = url_temp["url_temp"].format(page_start) # 構(gòu)造下一頁的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()

效果圖:

總結(jié)

以上是生活随笔為你收集整理的爬取豆瓣网电视剧数据(共1500条)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。