python爬虫爬取下一页_【Python爬虫】如何爬取翻页url不变的网站

news/2024/5/15 15:31:43/文章来源:https://blog.csdn.net/weixin_39585070/article/details/110347712

ed22584f-169c-4921-8b2b-06d37b0b4d20.gif点击蓝字“python教程”关注我们哟!

之前打算爬取一个图片资源网站,但是在翻页时发现它的url并没有改变,无法简单的通过request.get()访问其他页面。据搜索资料,了解到这些网站是通过ajax动态加载技术实现。即可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

这样的设置无疑给初期爬虫新手制造了一些困难。

1、什么是ajax

几个常见的用到ajax的场景。

比如你在逛知乎,你没有刷新过网页,但是你却能看到你关注的用户或者话题有了新动态的消息提示。

还比如,我们在看视频时,可以看到下面的评论没有完全全部加载出来,而是你向下拖动一点,它给你加载一点。

从上述场景你应该也可以发现它的优点:

方便与用户的交互,不用重新加载整个网页,就可以实现刷新,不用中断用户的行为。你正在看程序员如何找对象呢,此时来个消息推送,整个网页被刷新了,你说你气不气!

还是你在看程序员如何找对象,但是此时通信状况不好啊。回答加载不出来,页面就空白的卡那了,回答加载不出来,你说急不急!那这样咯,先给你看几个回答,在你看的时候我再悄悄的加载其它的数据,那不就解决了吗?就跟吃饭一个道理,你点了一桌子菜,难道菜全做好了再给你上吗?肯定不会的呀,做好一道上一道嘛,对不对。

从服务端的发送过来的ajax数据,体积比较小。浏览器知道怎么渲染它,这样就减轻了服务端的压力,让客户端,也就是浏览器承担了一些任务。

Ajax技术的核心是XMLHttpRequest对象(简称XHR),可以通过使用XHR对象获取到服务器的数据,然后再通过DOM将数据插入到页面中呈现。虽然名字中包含XML,但Ajax通讯与数据格式无关,所以我们的数据格式可以是XML或JSON等格式。(具体请访问:https://www.w3.org/TR/XMLHttpRequest/)

XMLHttpRequest对象用于在后台与服务器交换数据,具体作用如下:

在不重新加载页面的情况下更新网页

在页面已加载后从服务器请求数据

在页面已加载后从服务器接收数据

在后台向服务器发送数据

2、如何爬取ajax动态加载的网页

这里用到的方法是通过分析响应请求,模拟响应参数。再通过requests库的request.post()函数去post相对应的参数即可

具体方法如下:

打开开发者工具,快捷键F12,不行就Fn + F12.

b5b9170b-26c2-46da-974b-c06308239669.png

标红的1, network, 在其中可以看到服务器加载过来的资源。

标红的2, 是一个过滤器,你可以按照文件格式筛选。

标红的3,是加载过来的具体文件。

00640017-525a-45d6-8769-d0d6adcc7c36.png

Headers中的request method 中显示我们使用的是POST方法。

而且FROM Data 中有一个参数,page。

利用Form Data 中的数据,编写一个字典,赋值给requests.post()中的data即可

接下来就可以正常访问和翻页了!

更为具体的信息可见:https://zhuanlan.zhihu.com/p/27346009,很感谢其提供的思路和帮助

附源码

import requestsimport osimport redef get_page(url,page_num):pageList =[]for i in range(1,page_num +1):formdata ={'type':'index' ,'paged': i}try:r = requests.post(url,data =formdata)r.raise_for_status()r.encoding = r.apparent_encodingprint('链接成功')p = re.compile(r'href="(http://www.jdlingyu.net/\d{5}/)"')tempList = re.findall(p,r.text)for each in tempList:pageList.append(each)print('保存页面成功')tempList = []except:print('链接失败')print(pageList)return pageListdef get_picure(pageList):picList = []for each in pageList:try:r = requests.get(each,headers = kv)r.raise_for_status()r.encoding = r.apparent_encodingp = re.compile('http://img.jdlingyu.mobi/[^"]+\.jpg|http://w[wx][23].sinaimg.cn/[^"]+\.jpg')tempList = re.findall(p,r.text)for each in tempList:picList.append(each)print('保存图片链接成功')tempList = []except:print('保存图片链接失败')return picListdef down_picture(picList,root):picList = list(set(picList))if not os.path.exists(root):os.mkdir(root)for each in picList:path = root + each.split('/')[-1]if not os.path.exists(path):r = requests.get(each,headers = kv)r.raise_for_status()with open(path,'wb') as f:f.write(r.content)print('动图已保存')else:print('动图已存在')url = 'http://www.jdlingyu.net/'kv = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0'}root = 'D://绝对领域//'pageList = get_page(url,2)picList = get_picure(pageList)down_picture(picList,root)

注意事项

01

对Python开发技术感兴趣的同学,欢迎加下方的交流群一起学习,相互讨论。

02

python交流学习扣扣群:934109170,多多交流问题,互帮互助,群里有不错的学习教程和开发工具。学习python有任何问题(学习方法,学习效率,如何就业),可以随时来咨询我

好啦!文章就给看官们分享到这儿

最后,如果觉得有帮助,记得关注、转发、收藏哟

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_804306.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php建站目,PHP小项目:轻松创建gif图在线制作网站

原标题:PHP小项目:轻松创建gif图在线制作网站各位朋友,大家下午好!今天给大家带来的教学是 轻松创建gif图在线制作网站!这里就需要用到一个 GIF动画的PHP类库!下面我把类库代码分享给大家由于源码比较长&am…

nginx 1.14.2 php,CentOS7上安装Nginx1.14.2并部署PHP静态网站

我这里以CentOS7.4 x64服务器为例记录如何安装Nginx并且部署一个php静态网站,无数据的。先从Nginx的安装开始:1、先安装Nginx所依赖的软件:安装gcc:输入命令:yum install gcc-c 回车,中间会出现选择,输入…

lamp cacti 点击php下载,lamp 环境下装cacti网站流量监控工具

接下来我是介绍搭建 apache,mysql php 这三种 整合关系关闭SELINUX [rootmoyea ~]# vi /etc/selinux/config#SELINUXenforcing #注释掉#SELINUXTYPEtargeted #注释掉SELINUXdisabled #增加:wq 保存,关闭shutdown -r now #重启系统…

linux关机保护,linux中的关机敕令有什么区别_网站服务器运转保护

linux中关机敕令的区别是:实行shutdown敕令时,体系会关照一切登录的用户体系将要封闭;实行halt敕令时,文件体系写操纵完成后,内核住手;init敕令用于切换体系的运转级别,【init 0】示意关机。Lin…

php mysql 网站性能分析工具_大型网站调试工具之一(php性能优化分析工具XDebug)...

一、安装配置1、下载PHP的XDebug扩展,网址:http://xdebug.org/2、在Linux下编译安装XDebug引用tar -xzf xdebug-2.0.0RC3.gzcd xdebug-2.0.0RC3/usr/local/php/bin/phpize./configure --enable-xdebugcp modules/xdebug.so /usr/local/php/lib/php/exten…

php内容管理网站源码,DirCMS PHP内容管理系统 v6.0

DirCMS内容管理系统,是国内自主研发的一款功能强大而又不失小巧简洁的由PHPMysql架构的内容管理系统。DirCMS代码全部开源,便于使用者二次开发或定制;并采用简洁的模板标签技术,使制作模板更加容易,一般情况下&#xf…

linux中不保存的命令是,vim退出不保存的命令是什么?_网站服务器运行维护,vim,linux...

linux下如何用iptables开放指定端口_网站服务器运行维护linux下用iptables开放指定端口的方法是:1、执行【/sbin/iptables -I INPUT -p tcp –dport 8000 -j ACCEPT】命令开启端口;2、重启服务;3、查看端口是否已经开放。vim退出不保存的命令…

网站服务器响应网页浏览请求的运作流程,301重定向的运作流程

301重定向的运作流程(2014-10-17 14:15:25)标签:it网站服务器响应网页浏览请求的运作流程让我们先来了解一下用户/搜索引擎和网站一开始的交互流程。当用户或搜索引擎向一个网站服务器发出网页浏览请求时,该服务器将:通过域名服务器(DNS)将域…

河南2021高考成绩查询系统入口,2021河南省高考成绩查询网站入口

2021河南省高考三天,之后成绩什么时候出来可以查询呢,河南省高考成绩在什么平常查询分数,大家以查询分数来预估大学填报志愿。河南省高考成绩将于6月25日零时起通知考生。2021河南省高考成绩查询网站入口高考成绩查询过后应该做什么参照分数找…

基于springboot的音乐网站_开源分享springboot+vue.js音乐推荐系统

需求分析系统研究的主要角色是在线音乐系统,如何实现用户的在线听歌系统,如何实现管理员管理网站歌曲内容。本系统分为用户和管理员两个角色,两个角色的功能要求如下:用户角色:1.用户打开网站,在未注册或未…

abaqus结构工程分析及实例详解pdf_推荐一个学习疲劳分析的网站

网址:http://fatiguetoolbox.org网站上提供开源的疲劳寿命分析软件Fatlab下载,该软件基于MATLAB开发。另有若干分析实例,金属疲劳理论介绍,更多相关疲劳方面的软件、资源的链接。。作者提供了其收集和研究的疲劳数据以及疲劳方面的…

seo建设者_SEO优化|网站文章更新的频率对其优化效果存在影响吗?

关于网站文章的更新,主要要求是讲清的是,内容的不断更新是网站生存和发展的最基本条件。无论用户还是搜索引擎,都不可能过多地关注长时间不更新的网站。有无必要扔掉这些死亡或准死亡的站点也只是时间问题。内容更新的频率表示网站的活跃度。…

内网https需要ssl证书_网站HTTPS之路——安装、配置SSL证书及强制开启HTTPS

从2018年年底开始,谷歌浏览器Chrome对于http://站点将显示不安全的标志。所以最近终于开始琢磨SSL证书的事,让自己的网站不再显示不安全。一、证书申请对于个人站点而言,当然首选免费的SSL证书,毕竟财力有限,况且用户和…

php手机网站支付宝_支付宝支付-手机网站支付接口(H5手机站)

1:支付宝官方文档和demo,大家可以去下载学习我也是看文档,然后自己摸索查资料最后才搞定的,全程下来确实学到不少东西;2:签名方式及语言版本选择我的这个H5支付功能是嵌入到thinkphp框架里的,现…

seo提交工具_SEO:教您新网站的优化方法有哪些?

今天小龙教您新网站的优化方法有哪些?新站上线之初如果有备案,新站2个月的扶持期内,只做一个事情:提交大量优质原创内容,且内容为不间断提交。个人认为这个点是做新站优化的核心点,其余的seo优化技巧可概括…

android 怎么实现手机网站支付_手机网站怎么做竞价推广,你们知道吗?

百度移动推广是百度竞价推出的一个非常重要的新产品,它跟搜索推广存在一定程度上的不同,并且随着移动互联网市场的发展和扩大,移动竞价必将成为未来市场竞争的有力武器。因此,如何运用好百度移动推广就变得非常重要,下…

产品展示网站源码_新手SEO网站优化进阶之网站代码优化

SEO优化入门很简单,想精通却很难,需要SEOer自主学习相关的一些知识点和技巧,然后通过大量的实践去进行验证。今天老张就来跟大家说一说代码优化的注意事项。代码优化主要包括一些无用代码删除、注释代码精简、代码压缩和js优化调整等等。通过…

建站模板论坛_建站ABC展示型网站和论坛型网站建站有哪些区别?

网站的类型有很多,市面上常用的有展示型网站、论坛型网站、商城型网站跟O2O型网站这几大类,那么,建站ABC展示型网站和论坛型网站建站有哪些区别?其实,展示型网站、论坛型网站都可以在建站ABC上制作,今天就先…

java 后端实现网站打开_计算机专业,应该学习前端还是后端?具体有什么不一样?...

首先说说前端与后端的区别吧 前端主要数页面展示,就比如你现在打开浏览器进入一个网站,网站上面的图片布局都是依靠前端来完成的,如果你说你特别喜欢这种,但是还是不够,自己的审美也非常重要,每一个页面的U…

做网站java好还是php好_java与php哪个做网站简单

java与php哪个做网站简单php做网站更简单。1. php即写即用的。也就是说每次只有一改动完成,用户立马看到效果,而java则慢多了,代码改动完成后,要重新编译,然后重启jvm,中间耗费的时间可是不少啊&#xff0c…