python爬虫豆瓣电影按电影类型_Python爬虫入门 | 7 分类爬取豆瓣电影,解决动态加载问题...
比如我们今天的案例,豆瓣电影分类页面。根本没有什么翻页,需要点击“加载更多”新的电影信息,前面的黑科技瞬间被秒……
又比如知乎关注的人列表页面:
我复制了其中两个人昵称的 xpath:
//*[@id="Popover-35130-11238-toggle"]/a
//*[@id="Popover-35130-42416-toggle"]/a
竟然需要 ID 这种恶心的东西,规律失效。
上面的标记应该是“分类”,而不是“排行榜”,更正一下。
首先要告诉你的是,这种动态加载的页面,一般数据会在Network的 JS或者 XHR 类目里。
我们打开开发者工具,看这一页的 XHR里没有任何文件,然后点击加载更多按钮,看它给我们返回什么信息。
咦?返回了一个新的文件,出于好奇,我们有必要看看究竟
右键点击 >> Open in new tab
有的网站 返回的 JS、XHR 信息比较多,需要你去尝试和筛选。
这个 json 页面看起来就很亲切了,包含电影名称、导演、评分、演员、链接等数据。最关键的是,我仔细看了一遍页面后发现,这一页的电影信息,正好是新加载出来的所有电影的信息。
你的网页看 json 很乱?不要着急,那是你的chrome没有安装jsonview这个插件。证号为你准备好了,子按下方的云盘下载、安装就好:
好了,又加载了两次,不出意料地又加载出了两页 XHR 信息,于是,满怀期待地分别打开它们。新加载的两个页面,和网页显示的电影信息完全相同。
我们再来看看 XHR 加载的这几个页面的 url:
#第二页
https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=&start=20
#第三页
https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=&start=40
#第四页
https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=&start=60
比较后就可以轻松发现,这些页面的 url 是有规律的:只有最后 start= 后面的数字在变化,而且是以20为步长递增的,20正好对应每次加载出来的电影数量。
于是我们可以轻松地写出页面循环来爬取:
for a in range(3):
url='https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=&start={}'.format(a*20)
# 用 a*20 表示每个页面按 20 的步长递增,只示例3个页面,你可以按需求增加。
按照前面的套路写出代码,并得到结果:
import requests
import json
import time
for a in range(3):
url_visit = 'https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=&start={}'.format(a*20)
file = requests.get(url_visit).json() #这里跟之前的不一样,因为返回的是 json 文件
time.sleep(2)
for i in range(20):
dict=file['data'][i] #取出字典中 'data' 下第 [i] 部电影的信息
urlname=dict['url']
title=dict['title']
rate=dict['rate']
cast=dict['casts']
print('{} {} {} {}\n'.format(title,rate,' '.join(cast),urlname))
爬取的数据如下:
解释一下代码中的一些细节:
file = requests.get(url).json()
之前我们用的 .text 是需要网页返回文本的信息,而这里返回的是 json文件所以用 .json()
dict=file['data'][i]
urlname=dict['url']
取出字典中的值,需要在方括号中指明值对应的键
' '.join(cast)
因为有多名演员,这里用了 join() 函数,在字符串中间加入空格分隔。
当然,你也可以把爬下来的信息存到本地:
对电影评分进行排序,不久得到了所有的高分电影吗?
如果你想有专业老师授课、有系统性知识、有实时在线答疑的老师的话,可以加入我们的课程《Python爬虫(入门+进阶)》。
完整7节课程目录:
python爬虫豆瓣电影按电影类型_Python爬虫入门 | 7 分类爬取豆瓣电影,解决动态加载问题...相关推荐
- Python爬虫入门 | 7 分类爬取豆瓣电影,解决动态加载问题
比如我们今天的案例,豆瓣电影分类页面.根本没有什么翻页,需要点击"加载更多"新的电影信息,前面的黑科技瞬间被秒-- 又比如知乎关注的人列表页面: 我复制了其中两个人昵称 ...
- python爬取携程网旅游_爬取携程网(ajax动态加载)
爬取 携程旅游网 'content-type':'application/json', 这个请求头参数是关键 import requests import json import re headers ...
- python爬取豆瓣电影信息可行性分析_Python爬虫实现的根据分类爬取豆瓣电影信息功能示例...
本文实例讲述了Python爬虫实现的根据分类爬取豆瓣电影信息功能.分享给大家供大家参考,具体如下: 代码的入口:if __name__ == '__main__': main()#! /usr/bin ...
- python 爬虫 快看漫画整站爬取(解决动态加载漫画图片地址、漫画图片合成长图、图片文件排序等问题)
运行结果: 这个是爬取的目标 爬取之后建立文件夹,合成长图之后删除文件夹 这里仅仅做几组演示, 由于合成的图片有单列长度限制,所有拆分成两列 开始: 首先打开网站,找到某个漫画,发现点鼠标右键不可以, ...
- Python爬虫学习---------根据分类爬取豆瓣电影的电影信息
代码的入口: if __name__ == '__main__': main() #! /usr/bin/python3 # -*- coding:utf-8 -*- # author:Sirius. ...
- Python《使用selenium解决动态加载的问题》
爬取的网址呢,还是上一篇博文涉足的 https://www.dmzj.com/ 但是这一次,我们使用selenium来获得每个章节的所有图片,因为动态网页比如常见的js动态生成,用静态方法访问网站并且 ...
- Python爬取京东iphone8的异步加载评论
运行环境 Python 3.X 寻找评论信息地址 我们打开京东商城,搜索iphone8 iphone8虽然买不起,但是看看也欢迎 我们点击进去查看详情 往下翻,找到商品评价,点击 不仅有评论,而且还有 ...
- 【Python】爬取菜鸟物流管家异步加载XHR订单
最近需要商家的订单信息,一直Ctrl+c和Ctrl+v感觉就是有点儿不科学,所以就想爬一下试试. 首先得有商家的账号,巧妇难为无米之炊,还是得有账号.因为以前没有爬过,就是各种的尝试. 本来是想用se ...
- Python爬虫入门 | 4 爬取豆瓣TOP250图书信息
先来看看页面长啥样的:https://book.douban.com/top250 我们将要爬取哪些信息:书名.链接.评分.一句话评价-- 1. 爬取单个信息 我们先来尝试爬取书名,利用之 ...
- python爬虫实例解析-Python(爬虫)- 动态加载案例分析
requests """ 基于网络请求的模块. 环境的安装:pip install requests 作用:模拟浏览器发起请求 分析requests的编码流程: 1.指定 ...
最新文章
- 难忘的一天——装操作系统(三)
- 拖放操作和文件复制小功能
- 虚拟服务器至强,用至强解决瓶颈 桌面虚拟化案例分享
- php显示html表单内容,HTML表单是什么?HTML表单内容的详细介绍(附代码)
- Rails下cloud datastore的使用
- [高并发]Java高并发编程系列开山篇--线程实现
- 西南大学C语言2019年12月,西南大学[1056]计算机基础2020年12月机考参考答案
- 处理文章附件路径问题
- Imagick 处理gif psd格式
- POI--HSSFCell类
- 加密文件夹密码忘记怎么办?
- 【Elasticsearch】Elasticsearch 报错 Values less than -1 bytes are not support
- ICP经营许可证与ICP备案有什么区别?
- bootstrap的datetimepicker使用(1.将默认的英文设置为中文2.选择日月年的时候记录之前的操作)...
- 【236】Python求列表最长字符串及lambda和最长公共子串
- Oracle使用shutdown命令后长时间无反应
- 前端基础 CSS 第十一章 使用CSS样式表 ----暑假学习第七、八天
- 用户与计算机通信的界面是什么意思,GUI是什么意思
- android 动态改变button样式,Android 修改button颜色
- Linux 设置多指触控手势,以 Manjaro 为例
热门文章
- PaddlePaddle入门整理十:PaddlePaddle训练自己的数据集
- CTF隐写术知识点总结
- Win10下载nmap!!!!(超详细,学不会直接远程指导)
- 微微一笑很倾城(2)
- Python快速开发分布式搜索引擎Scrapy精讲—craw scrapy item loader机
- 【剑指Offer】46. 把数字翻译成字符串
- Nginx神来之笔,提高并发原来如此简单
- 已知ip地址和其子网掩码如何求网络号子网号主机号
- 国内最著名的公用CDN BootCDN停止服务
- python 全栈开发,Day88(csrf_exempt,ES6 快速入门,Vue)