触点数字孪生,揭秘它的独特魅力
1189
2022-11-07
爬取豆瓣网电视剧数据(共1500条)
我们现在爬取电视剧中的美剧、国产剧、港剧三个分类的所有数据,共1500条1、打开开发者工具,找到第一页对应的json数据。(寻找时忽略所有的js,css,ico文件)
2、在第一页的包含电视剧数据的包中找到请求的url
展示一下请求json的结构
下面对比一下两个页面的url
第一页:page_limit指的是煤业展示的电视剧数量 page_start表示的是每页展示的电视剧起始编号 研究到这里,我们就可以开始构造不断请求的url了,每当我们爬取下一页数据时,让page_start += 20即可
构造url:
先写一个模板url:在不断爬取的过程中用format函数将page_start参数填进去即可
下面给出爬取美剧、国产剧、港剧三个分类数据的代码
import requestsimport jsonclass DoubanSpider: def __init__(self): self.url_temp_list = [ { "url_temp": " "country": "CN" }, { "url_temp": " "country": "US" }, { "url_temp": " "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数据类型dict def 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,,,,19 def 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 = 0 while True: url = url_temp["url_temp"].format(page_start) # 构造下一页的url json_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: break page_start += 20def main(): spider = DoubanSpider() spider.run()if __name__ == '__main__': main()
效果图:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。