爬取豆瓣华语电影
本帖最后由 山野村夫-陈墨 于 2019-7-20 21:48 编辑本来是要爬“吾爱破解”的,结果被反了。换了个目标,向豆瓣电影下手。
还是拿“软柿子“下手。
'''
豆瓣 华语 电影
可见网站:
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日
'''
importrequests
importjson
fromlxml import etree
defget_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"]
defsave(record):
with open("国语电视剧.txt","w",encoding="utf-8") as f:
foriin range(len(record)):
f.write("\n"+str(i+1)+"、")
f.write(str(record))
print(record)
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”文件中,以及对数据的读取后的简单处理,
不想冲帖子数目,就补录吧
'''
豆瓣 华语 电影
可见网站:
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日
'''
importrequests
importjson
import csv
import pandas as pd
defget_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"]
defsave_csv(list):
key_list = []
for keyin list.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=[]
forjinrange(len(key_list)):
value.append( list])
print(value)
f_csv.writerow(value)
defsave_txt(record):
with open("国语电视剧.txt","w",encoding="utf-8") as f:
foriin range(len(record)):
f.write("\n"+str(i+1)+"、")
f.write(str(record))
#print(record)
print("保存结束!")
def choose():
tmp_csv = pd.read_csv('豆瓣华语电影.csv', index_col=1)
tmp_csv = tmp_csv > 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()
hfg123 发表于 2019-11-27 19:34
大佬,现在那个搜索接口请求头是要加"Upgrade-Insecure-Requests"这个才能爬取吗?
应该是需要,请求头里有的东西可以用来反爬虫,所以加上比较好。 时间很长了,我也忘了 山野村夫-陈墨 发表于 2019-11-28 19:42
应该是需要,请求头里有的东西可以用来反爬虫,所以加上比较好。 时间很长了,我也忘了
测试一下,只要请求头就ok了 正好需要豆瓣电影 不错,刚好需要 看起来不错
谢谢分享
;www楼主想拿吾爱下手啊
不错,刚好需要正在学习
下来学习一下
这个怎么玩啊,不会玩,请教大神 赞一个。厉害。 怎么去掉哪些英文字母
页:
[1]
2