Erlo

爬虫豆瓣热度排名前100的电影名称和评分以及在豆瓣的地址

2022-03-31 20:30:05 发布   355 浏览  
页面报错/反馈
收藏 点赞

'''

动态网页爬虫技术——API请求

采用寻找API并传递有效参数重放API的方法,是一个很通用的方法,在很多网站都可以使用。

优点:速度快,结果精简

案例:提取豆瓣热度排名前100的电影名称和评分以及在豆瓣的地址

'''


爬虫豆瓣热度排名前100的电影名称和评分以及在豆瓣的地址

爬虫豆瓣热榜TOP最终结果

import requestsimport jsonimport pandas as pddef 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 = 'https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&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_res1def 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)
登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认