豆瓣电影数据爬取源码(爬虫豆瓣热度排名前100的电影名称和评分以及在豆瓣的地址)
'''
动态网页爬虫技术——API请求
采用寻找API并传递有效参数重放API的方法,是一个很通用的方法,在很多网站都可以使用。
优点:速度快,结果精简
案例:提取豆瓣热度排名前100的电影名称和评分以及在豆瓣的地址
'''
爬虫豆瓣热榜TOP最终结果
import requests
import json
import pandas as pd
def page_pachong():
content_res1 = []
for i in range(5):
print('第' str(i 1) '页开始……')
page_start = str(i*20) #注释1:一页有20条数据,爬取100条,而page_start起始为0,因此用一个i,从0到4循环5次,后面URL是个字符串类型,这里用str()方法进行类型转换,转成str类型,方便后面调用
url = 'movie.douban/j/search_subjects?type=movie&tag=热门&sort=recommend&page_limit=20&page_start=' page_start #注释2:每一次循环只改变page_start的值,所以每次在最后修改这个值
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'}
requests.packages.urllib3.disable_warnings() #加上这行代码即可,关闭安全请求警告(出现警告是由于下面参数verify:Ture/False,默认是Ture,用于验证SSL证书开关)
response = requests.get(url=url,headers=headers,verify=False)
content = response.content.decode()
print(content)
content_list = json.loads(content)['subjects'] #注释3:返回的content经过decode()方法解码,变成字符串类型,得到json格式的字符串,用loads()方法,将content解析成一个字典格式的内容,存储在content_list,最后加上“['subjects']”是用来解析内容,不是所有内容都这么写
# #json模块有两个主要方法——json.loads()和json.dumps(),前一个是用来解码JSON数据的,后一个是编码JSON数据的
for item in content_list: #注释4:content_list数组对象,做一个循环分支,分条提取
title = item['title'] #注释5:每条数据是字典类型的对象,写对应的Key名得到想要的值,这里得到电影的名称
rate = item['rate'] #注释6:这里得到电影的评分
link = item['url'] #注释7:这里得到电影的豆瓣链接
print(title, rate, link)
content_res = {"title":title,"rate":rate,"link":link}
content_res1.append(content_res)
return content_res1
def save_excel(content_res1):
pf = pd.DataFrame(content_res1)
order = ["title","rate","link"] #指定列的顺序
pf = pf[order]
file_path = pd.ExcelWriter('tongji_reslut.xlsx') #打开excel文件
pf.fillna(' ',inplace=True) #替换空单元格
pf.to_excel(file_path, encoding='utf-8', index=False, sheet_name="sheet1")
file_path.save()
content_res1 = page_pachong()
save_excel(content_res1)
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com