三、实战---爬取百度指定词条所对应的结果页面(一个简单的页面采集器)
在第一篇博文中也提及到User-Agent,表示请求载体的身份,也就是说明通过什么浏览器进行访问服务器的,这一点很重要。
① UA检测
门户网站服务器会检测请求载体的身份。如果检测到载体的身份表示为某一款浏览器的请求,则说明这是一个正常的请求;若检测到载体身份标识并不是基于任意一款浏览器,则说明这是一个非正常的请求也就是爬虫,服务器很有可能拒绝该请求!!!
② UA伪装
让爬虫对应的请求载体身份标识进行伪装成某一款浏览器
项目
项目概述:用户输入指定的关键词,之后通过百度搜索引擎查到的所有相关页面进行下载到本地
步骤:
① 打开百度,搜索任意关键字信息,查看地址栏信息
例如我这里搜索beyond
,地址栏信息为https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=beyond&oq=%25E9%25BB%2584%25E5%25AE%25B6%25E9%25A9%25B9&rsv_pq=86cafe360003cde6&rsv_t=6497SlvSbubKeEQiJKGnLL%2BCucYyWr9OJTHOTd0x%2Bbx0%2BViW%2FN75Q0avW1M&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=6&rsv_sug1=4&rsv_sug7=100&rsv_sug2=0&rsv_btype=t&inputT=964&rsv_sug4=965
实则有用信息仅为https://www.baidu.com/s?wd=beyond
,你也可以单独输入该网址仍可接收到服务器反馈的相同页面结果信息。(同理其他的搜索引擎也都类似)其中beyond为可变参数,遇到可变参数需要把其放入到字典中去
②整理完url之后,我们需要获取某个浏览器载体身份认证信息,这里以Chrome为例,随便打开一个网站(例如https://www.baidu.com/s?wd=beyond
),F12打开开发者工具,F5重新向服务器发出请求,Network下Name随便找一个点进入,就可以找到User-Agent信息,例如我的是这个User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
,该信息就是Chrome浏览器的唯一身份认证标识
③在get方法中,传入User-Agent和用户输入的关键字信息即可(均为字典形式)
完整代码
import requestsif __name__ == '__main__':#UA伪装,获取某个浏览器的User-Agent唯一载体身份标识headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'}#指定urlurl = 'https://www.baidu.com/s?'#https://www.baidu.com/s?word=%E9%BB%84%E5%AE%B6%E9%A9%B9#处理url携带的参数,将参数封装到字典中keyword = input("please input a word:")param = {'wd':keyword}#对指定的url发起请求,对应的url是携带参数的,并且请求过程中已经处理了参数response = requests.get(url=url,params=param,headers=headers)#若不传入headers这个User-Agent信息,运行程序之后,服务器并不会给这个响应返回数据信息。这说明百度搜索引擎中采用了UA检测反爬虫机制#获取响应page = response.textfilename = keyword+".html"#持久化存储with open('E:/Jupyter_workspace/study/python/'+filename,'w',encoding='utf-8') as fp:#将服务器返回的页面信息存储到本地指定路径fp.write(page)print(filename,"保存成功")
运行效果如下:
三、实战---爬取百度指定词条所对应的结果页面(一个简单的页面采集器)相关推荐
- php 抓取搜狗页面,爬取搜狗指定词条对应的搜索结果页面(简易网页采集器)...
实战巩固 - 需求:爬取搜狗指定词条对应的搜索结果页面(简易网页采集器) - UA检测 - UA伪装 #UA:User-Agent(请求载体的身份标识) #UA检测: 门户网站的服务器会检测对应请求的 ...
- 实战爬取百度百科1000多个页面,发现惊天大密,你们猜猜看
推荐一下我建的python学习交流qun:850973621,群里有免费的视频教程,开发工具. 电子书籍.项目源码分享.一起交流学习,一起进步! 爬虫最简单的架构就三个方面: 1.URL管理器:主要负 ...
- python爬取百度百科词条-python简单爬虫爬取百度百科python词条网页
目标分析: 目标:百度百科python词条相关词条网页 - 标题和简介 入口页:https://baike.baidu.com/item/Python/407313 URL格式: - 词条页面URL: ...
- python爬取百度贴吧xpath_爬虫基础系列xpath实战——爬取百度贴吧图片(3)
8586231_192932724000_2.jpg #百度贴吧图片爬虫 # 爬取步骤:1.基础设置,2.构造url,3.爬取页面,4.解析页面,5.保存页面 # 采取urllib爬取 #引入必要的包 ...
- Python爬虫实战-爬取百度贴吧帖子
本篇目标 1.对百度贴吧的任意帖子进行抓取 2.指定是否只抓取楼主发帖内容 3.将抓取到的内容分析并保存到文件 如果觉得一步步看麻烦的话可以拉到最下面有完整源码可以直接使用 1.URL格式的确定 首先 ...
- 用python 爬取百度百科内容-爬虫实战(一) 用Python爬取百度百科
最近博主遇到这样一个需求:当用户输入一个词语时,返回这个词语的解释 我的第一个想法是做一个数据库,把常用的词语和词语的解释放到数据库里面,当用户查询时直接读取数据库结果 但是自己又没有心思做这样一个数 ...
- Python爬虫实战之爬取百度贴吧帖子
Python爬虫实战之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 对百度贴吧的 ...
- iphone看python文件_Python实战 | 只需 ”三步“ 爬取二手iphone手机信息(转发送源码)...
原标题:Python实战 | 只需 "三步" 爬取二手iphone手机信息(转发送源码) 本次实战是爬取二手苹果手机的信息,共爬取了300部手机信息,效果如下: 开发环境 环境:M ...
- Python爬虫实战,简单的爬虫案例,以及爬取百度贴吧网页原码和360翻译
一.爬取网页上的图片 import requestsresponse = requests.get("http://file.elecfans.com/web1/M00/8B/33/o4YB ...
最新文章
- deepfakes怎么用_如何使用 Deepfakes 换脸
- Jmeter分布式压测方案
- Linux Socket学习(十八)--完
- 仿windows造字程序的 ASP.NET图片组合生成控件
- F5 配置手册 -F5 BIG-IP 10.1-3-配置-网络
- 淘宝架构师为你揭秘2017双十一分布式缓存服务Tair
- ubuntu下安装minicom
- jquery ajax 上传文件报错,jQuery :ajaxfileupload+Struts2 文件上传,报错data undefined
- 经典实战教程!java编译器eclipse
- $(img)是什么意思_什么原因可以让你坚持跑步?医生总结5点,足以让你告别懒惰...
- 兼容pc端和移动端的轮播图插件 swiper.js
- 思科模拟器路由表怎么看_思科模拟器基本命令
- 管家婆软件显示服务器连接失败,管家婆软件提示“连接服务器失败”怎么办
- 性能碾压Notepad++的文本编辑器UltraEdit,程序员必备
- linux 临界区保护方法,操作系统-信号量临界区保护,
- android分享微信朋友圈带编辑功能吗,终于被我等到了,微信新版本能编辑别人的朋友圈啦!...
- WMS系统--移库逻辑
- 程序集定义(Assembly Definition File)
- 微软官方的精简版Windows 7——Windows Thin PC
- Windows 解决端口占用