Python爬取豆瓣电影信息遇到的问题
程序员文章站
2022-06-30 07:53:53
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar...
Python爬取豆瓣电影信息
说明
本文章并不是爬取电影来看,而是获取电影信息。
用到的库:
前言
当我这个小菜比打开百度搜索利用Python爬取豆瓣电影信息,随手打开一个爬取TOP250电影的教程。当我跟着以下步骤
import requests
import json
from bs4 import BeautifulSoup
# 构造请求头部
headers = {
'USER-AGENT':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
#网页地址
url = "https://movie.douban.com/top250?start="
# 发送请求,获得响应
response = requests.get(url=url,headers=headers)
# 获取网页html
html = response.text
#解析
soup = BeautifulSoup(html,'lxml')
#随便输出一个标签内容
tagData = soup.select('.hd')
#输出
print(tagData)
结果:
真香!!!就想自己找个页面搞一搞。
按年份来爬取电影信息
当我按上面的代码将url改成https://movie.douban.com/tag/#/,然后也是随便找个标签试试能不能拿到数据。
import requests
import json
from bs4 import BeautifulSoup
# 构造请求头部
headers = {
'USER-AGENT':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
#网页地址
url = "https://movie.douban.com/tag/#/"
# 发送请求,获得响应
response = requests.get(url=url,headers=headers)
# 获取网页html
html = response.text
#解析
soup = BeautifulSoup(html,'lxml')
#随便输出一个标签内容
tagData = soup.select('.article')
#输出
print(html)
结果:
人直接傻了,回去看看页面的F12。发现没有问题啊,是有数据的,怎么拿不到呢。。。。
解决
回去代码观察爬取下来的html网页发现
数据显示的是这段js代码,看到这里意识到数据可能是加载html页面之后再嵌入进去的。既然看的到电影信息,说明肯定是接收到数据的。打开一下F12查看请求URL
URL地址:https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&start=0&year_range=2020,2020
通过postman软件去访问请求地址
可以,直接返回json数据,谢谢你了。都不用BeautifulSoup解析页面
最终代码
import requests
import json
# 构造请求头部
headers = {
'USER-AGENT':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
yearList = [2020 , 2010 , 2000 , 1990 , 1980 , 1970, 1960]
for year in yearList:
#网页地址
url = "https://movie.douban.com/j/new_search_subjects?sort=S&range=0,10&tags=&start=0&year_range="+str(year)+","+str(year+9)
# 发送请求,获得响应
response = requests.get(url=url,headers=headers)
# 获取网页html
data = response.text
#获取json
jsonData = json.loads(data)
# 从json中获取列表
data = jsonData['data']
print('年份:'+str(year))
#遍历
for key in data:
print("片名:"+key['title']+" 评分:"+key['rate'],'')
结果
至于请求URL中的参数详解可以看一下这个链接
https://www.cnblogs.com/fangtaoa/p/8366528.html
本文地址:https://blog.csdn.net/weixin_47497423/article/details/107123672