第三篇 - 爬取豆瓣电影网
环境:python 3.6 pycharm
模块:requests,json
一、将爬取到的内容存放到txt文件中
1 import requests 2 import json 3 4 #请求头 5 headers = { 6 'Accept' : '*/*', 7 'Accept-Encoding' : 'gzip, deflate, br', 8 'Connection' : 'keep-alive', 9 'Host' : 'movie.douban.com', 10 'Referer' : 'https://movie.douban.com/typerank?type_name=%E6%88%98%E4%BA%89&type=22&interval_id=100:90&action=', 11 'User-Agent' : '', 12 'X-Requested-With' : 'XMLHttpRequest' 13 } 14 15 def write_films(file_name): 16 '''将电影名+评分+url存入movie.txt文件中''' 17 num_list = [0,20,40,60,76]#动态页面,20为一页 18 index =1#获取电影的个数 19 with open(file_name,'w',encoding='utf-8') as f: 20 for num in num_list: 21 url_1 = 'https://movie.douban.com/j/chart/top_list?type=22&interval_id=100%3A90&action=&start=' 22 url = url_1 + str(num) + '&limit=20'#每一页的url 23 response = requests.get(url=url,headers=headers) 24 r = response.text 25 response_list = json.loads(r) 26 for item in response_list: 27 rating = eval(item.get('rating')[0]) 28 url = item.get('url') 29 title = item.get('title') 30 f.write(str(index)+':'+title+','+str(rating)+','+url+'\n') 31 index += 1 32 33 if __name__ == '__main__': 34 write_films('movie.txt')
标红部分注意,user-agent对应的value,360极速浏览器的话,可以在地址栏输入about:version,回车,用户代理后面的一长串就是需要填入''里面的内容。
二、将爬取的内容存放到excel中
#!/usr/bin/env python # _*_ coding: UTF-8 _*_ """================================================= @Project -> File : Operate_system_ModeView_structure -> play.py @IDE : PyCharm @Author : zihan @Date : 2020/4/23 20:16 @Desc :爬虫 - 爬取豆瓣电影名等信息 =================================================""" import requests import json import pandas as pd def doubanmovie(): limit = 10 url = "https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&page_limit={}&page_start=0".format(limit) # 浏览器类型 headers = { "User-Agent": "" } result = requests.get(url, headers=headers) json_result = result.text json_result = json.loads(json_result) col = ['title', 'rate', 'url'] num = len(json_result['subjects']) # 确定一个数据类型,NaN代表非数值的特殊型 data = pd.DataFrame(index=range(num), columns=col) for i in range(num): data.loc[i, 'title'] = json_result['subjects'][i]['title'] data.loc[i, 'rate'] = json_result['subjects'][i]['rate'] data.loc[i, 'url'] = json_result['subjects'][i]['url'] filename = "电影排行.xlsx" data.to_excel(filename) if __name__ == '__main__': doubanmovie()
顺便说一下if __name__ == '__main__',简单的说就是用python解释器运行的时候,它是可以运行里面的代码的,如果是别的文件调用的话,那么后面的内容就不会执行。
另外,如果想要把程序打包成.exe可执行文件的话,需要用到pyinstaller。可以用pip install pyinstall下载。pyinstaller -F hello.py就可以得到一个hello.exe了。
需要说明的是,.exe在别的电脑上运行的时候对操作系统是由要求的,如果你的exe是在win10 64位的机子上打包,那么在win7 32位就不能运行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)