爬取ajax加载的豆瓣电影
(一)前提:找到ajax异步加载的包接口,注意第一个电影名
我们把Request URL网址复制到地址栏得到:
上图是json格式数据,且第一个电影一致,说明我们找到了正确的ajax的json接口
出现加载更多之前是20部电影,点击加载更多,我们会得到第二个json包,里面是另外20个电影。
(二)爬取豆瓣中美剧分类的电影200个第一种方式(最后优化):
多加载几个json接口,找url规律
对json接口找规律,for循环拿到各json数据的url接口进行访问,把需要内容存入txt
import requests# url2 = "https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&start=20&countries=%E7%BE%8E%E5%9B%BD"
# url3= "https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&start=40&countries=%E7%BE%8E%E5%9B%BD"
# url = "https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&start={}&countries=%E7%BE%8E%E5%9B%BD".format({(n-1)*20})
# response = requests.post(url2)
# print(response.json())for page in range(1,11,1):url = "https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&start={}&countries=%E7%BE%8E%E5%9B%BD".format((page-1)*20)# print(url)response = requests.get(url)# ## print(response.json())for item in response.json()['data']:title = item['title']with open('movie.txt','a',encoding='utf-8') as f:f.write(title+'\n')
结果循环十次,每次20个正好200条:
(二)优化
我们抓取数据争取一次访问url就拿到全部数据才是王道:
url的问号后面都是参数,我们用字典传就是了
点击分类中的美国,找到json接口
抓规律发现:参数中都有range和start这两个,与预期不符的是,观察多个json包后发先只有start在变,差是20
#点击分类中的美国找到的第一个接口
url1 = 'https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&start=0&countries=%E7%BE%8E%E5%9B%BD'#点击加载更多得到的json接口
url2 = 'https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&start=20&countries=%E7%BE%8E%E5%9B%BD'
我们来动态改变它爬取600个电影吧!但是搞了半天没实现能一次连接读取拿到所有数据
但是有一个重大发现!
上图中没有limit键,我大胆加上了如下:(参数都可以改着试试,比如换成英国啥的都行)
完整代码如下:
import requests
url = 'https://movie.douban.com/j/new_search_subjects'
index = 0
data_dic = {'sort' : 'U','limit':'500','tags':'','start':'0','countries': '美国'
}
response = requests.get(url,data_dic)for item in response.json()['data']:title = item['title']with open('movie.txt','a',encoding='utf-8') as f:f.write(title+'\n')
结果:
爬取ajax加载的豆瓣电影相关推荐
- selenium爬取Ajax加载的网页(以微博为例)
Tip:我写了一篇直接构造请求获取微博数据的文章,不使用selenium,直接访问url获取到json数据,然后解析即可得到想要的数据的文章,请参考微博博主动态及相册的请求构造规律 ========= ...
- Python爬虫爬取Ajax加载的百度图库
Ajax 是一种用于创建快速动态网页的技术, 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. Ajax用一句话来说就是不需要刷整个新页面即可从服务器取得数据(局部刷新) 今天通过在百度 ...
- python requests+json爬取ajax加载 爱彼迎深圳所有房源
目的: 爬取爱彼迎深圳所有房源的房主,价格,房源介绍等信息 步骤如下: step1:获取房源页面url 登陆爱彼迎网站,搜索深圳房源 https://zh.airbnb.com/s/homes?ref ...
- python爬取js加载的数据_JS动态加载数据不会爬?老司机教你两个方法爬取想要的数据...
学习Python的人绝大部分都是在用Python做爬虫,毕竟对于爬虫而言Python是不二选. 但是一般简单的静态页面网站还是很好爬取的,对于很多动态加载的网站就不知道怎么办了,今天小编就给大家介绍两 ...
- java.lang.NoClassDefFoundError:org/apache/commons/io/Charsets (jsoup配合htmlunit 爬取异步加载的网页遇到的)
最近用jsoup配合htmlunit 爬取异步加载的网页运行代码的时候,报错java.lang.NoClassDefFoundError:org/apache/commons/io/Charsets ...
- scrapy爬取动态网页_scrapy_splash 爬取 js 加载网页初体验
最近打算学习 scrapy_splash 来爬取 js 加载的动态网页 selenium 实在太慢了,不在迫不得已的情况下并不推荐使用 下面,直接开始吧 目标网站 JD 某商品 环境需求 已安装 do ...
- python爬虫动态加载页面_Python+Selenium爬取动态加载页面(2)
注: 上一篇<Python+Selenium爬取动态加载页面(1)>讲了基本地如何获取动态页面的数据,这里再讲一个稍微复杂一点的数据获取全国水雨情网.数据的获取过程跟人手动获取过程类似,所 ...
- 用Python爬取动态加载的诸如百度的图片
用Python爬取动态加载的诸如百度的图片 使用原因 代码如下 模块介绍 selenium模块 lxml解析模块 requests模块 去除重复 开启多线程 效果如下 留言 使用原因 学习Python ...
- python 异步加载_Python学习笔记4——爬取异步加载数据
一.什么是异步加载? 在之前的学习笔记中,爬取的网页是需要手动翻页的网址,但是一些网站是通过自动加载翻页的,如knewone网页.浏览knewone的官网就能发现,当下拉到网页最下端时,网站会自动加载 ...
最新文章
- Linux疑难杂症解决方案100篇(二十)-Linux正则表达式(实用)指南
- sql server 链接服务器 改访问接口_跨服务器链接数据库?其实很简单!(上)
- c程序设计语言用什么编译器,什么是编译器(编程软件)
- PMP 第七章 项目成本管理
- IOS开发CAKeyframeAnimation的基本使用与keypath的列举
- 【招聘(广州)】 招聘.NET程序员
- jsx怎么往js里传参数_在vue中使用jsx语法的使用方法
- bootstrap 滚动 进度条_bootstrap实现动态进度条效果
- 程序员,你还要迷茫多久?
- leetcode第一刷_Count and Say
- AS:Flash AS3中获取浏览器信息及URL相关参数(并非swf url地址)
- 深入学习.NET Web Services概念
- java案例代码16-java正则表达式的使用
- 东芝2505扫描软件_如何识别LED显示屏的扫描方式?-美亚迪分享
- 回顾2020年(1)
- 虚拟服务器C盘备份,分享:两种快速虚拟机备份方法
- SQL Server学习笔记6——LTRIM()函数(去掉空格)
- 后台管理系统——权限管理
- PAT A1010 Radix
- 拼多多电子面单云打印接口对接 (跨境erp应用,电子面单应用)[拼多多获取电子面单,拼多多面单打印]