本文来源吾爱破解论坛
本帖最后由 山野村夫-陈墨 于 2019-7-20 21:48 编辑
本来是要爬“吾爱破解”的,结果被反了。换了个目标,向豆瓣电影下手。
还是拿“软柿子“下手。
[Python] 纯文本查看 复制代码
''' 豆瓣 华语 电影 可见网站: https://movie.douban.com/explore#!type=movie&tag=%E5%8D%8E%E8%AF%AD&sort=recommend&page_limit=20&page_start=0 时间:2019年7月18日 ''' import requests import json from lxml import etree def get_message(start_page): url = "https://movie.douban.com/j/search_subjects?type=movie&tag=%E5%8D%8E%E8%AF%AD&sort=recommend&page_limit=20&page_start={}".format(start_page) header ={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36", "Upgrade-Insecure-Requests": "1",} response = requests.get(url,headers= header) html_str = response.text #得到的数据直接是json数据,所以直接处理 str = json.loads(html_str) #返回列表数据 return str["subjects"] def save(record): with open("国语电视剧.txt","w",encoding="utf-8") as f: for i in range(len(record)): f.write("\n"+str(i+1)+"、") f.write(str(record[i])) print(record[i]) print("保存结束!") if __name__ == "__main__": start_page = 0 record=[] #网页start_page最大为 220 while start_page<=220: #1.得到数据; channel_list = get_message(start_page) #2.追加数据; record.extend(channel_list) #extend把列表数据按照列表元素添加到列表中 start_page+=20 #3.简单处理:按照评分从高到底排序,sorted临时排序 record = sorted(record,key=lambda keys:keys['rate'],reverse=True) #4.数据保存 save(record)
关于上次的爬虫这次又加数据保存到“.csv”文件中,以及对数据的读取后的简单处理,
不想冲帖子数目,就补录吧
[Python] 纯文本查看 复制代码
''' 豆瓣 华语 电影 可见网站: https://movie.douban.com/explore#!type=movie&tag=%E5%8D%8E%E8%AF%AD&sort=recommend&page_limit=20&page_start=0 时间:2019年7月20日 ''' import requests import json import csv import pandas as pd def get_message(start_page): url = "https://movie.douban.com/j/search_subjects?type=movie&tag=%E5%8D%8E%E8%AF%AD&sort=recommend&page_limit=20&page_start={}".format(start_page) header ={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36", "Upgrade-Insecure-Requests": "1",} response = requests.get(url,headers= header) html_str = response.text #得到的数据直接是json数据,所以直接处理 str = json.loads(html_str) #返回列表数据 return str["subjects"] def save_csv(list): key_list = [] for key in list[0].keys(): key_list.append(key) print(key_list) #在这儿注意 "newline",可以尝试一下有newline和没有newline的结果 with open("豆瓣华语电影.csv","w",encoding="utf-8",newline="") as f: f_csv = csv.writer(f) #写标题 f_csv.writerow(key_list) #读取列表中嵌套的字典的数据,一行一行写入csv数据 for i in range(len(list)): #每次清空,不然和会重复 value=[] for j in range(len(key_list)): value.append( list[i][key_list[j]]) print(value) f_csv.writerow(value) def save_txt(record): with open("国语电视剧.txt","w",encoding="utf-8") as f: for i in range(len(record)): f.write("\n"+str(i+1)+"、") f.write(str(record[i])) #print(record[i]) print("保存结束!") def choose(): tmp_csv = pd.read_csv('豆瓣华语电影.csv', index_col=1) tmp_csv = tmp_csv[tmp_csv['rate'] > 6.0] tmp_csv.to_csv('豆瓣02_1.csv', sep=',') if __name__ == "__main__": start_page = 0 record=[] #网页start_page最大为 220 while start_page<=220: #1.得到数据; channel_list = get_message(start_page) #2.追加数据; record.extend(channel_list) #extend把列表数据按照列表元素添加到列表中 start_page+=20 #3.简单处理:按照评分从高到底排序,sorted临时排序 record = sorted(record,key=lambda keys:keys['rate'],reverse=True) #4.数据保存csv save_csv(record) #5.数据保存txt save_txt(record) #6.数据的简单的处理:选取评分大于6.0的电影 choose()
版权声明:
本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。