新媒体课堂:pythoPython爬虫实战二
查看上一节:python爬虫分类和robots协议
python爬虫urllib使用和进阶上节课已经介绍了爬虫的基本概念和基础内容 , 接下来就要开始内容的爬取了 。
其实爬虫就是浏览器 , 只不过它是一个特殊的浏览器 。 爬取网页就是通过HTTP协议访问相应的网页 , 不过通过浏览器访问往往是人的行为 , 把这种行为变成使用程序来访问就是爬虫的过程 。
用户在使用浏览器的时候 , 翻阅速度是比较慢的 , 但是爬虫在访问的时候速度是很快的 , 它会很快的获取到页面上的内容 , 并将其变成自己网站的内容 , 所以对于开发者来讲 , 对于这些搜索引擎的爬虫是又爱又恨的 。
有的网站会设置反爬虫策略来拒绝爬虫对网站内容的爬取要求 。 此时我们要爬取这种网站的话 , 是要对程序进行包装的 , 尽量去模拟人的行为来获取网站内容 。
urllib包urllib是Python提供的一个工具包 , 用来处理url和相应的一些内容的 。
Python2中提供了urllib和urllib2 。 urllib提供较为底层的接口 , urllib2对urllib进行了进一步封装 。 Python3中将urllib合并到了urllib2中 , 并只提供了标准库urllib包 。 我们重点使用的是Python3 , 但是它们的接口都是相同的 , 掌握了就可以在任何场景使用 。
urllib还有一些子包 , 分别介绍下:
urllib.request模块(用的比较多)用于打开和读写url 。 模块定义了在基本和摘要式身份验证、重定向、cookies等应用中打开URL(主要是HTTP)的函数和类 。
urllib.error包含了由urllib.request引起的异常urllib.parse用于解析urlurllib.robotparser分析robots.txt文件urlopen方法格式:urlopen(url , data=https://pcff.toutiao.jxnews.com.cn/p/20200411/None)注释:url是链接地址字符串 , 或请求对象 。 data是提交的数据 , 如果data为None发起GET请求 , 否则发起POST请求 。 见urllib.request.Request#get_method返回http.client.HTTPResponse类的响应对象 , 这是一个类文件对象 。 接下来看一段代码:
文章图片
验证其中的“返回真正的URL”:打开http://www.bing.com按下F12打开其中的Network状态栏 , 点击刷新:
文章图片
可以看到第一个访问的是必应网站 , 这里的301代表的意思是 , 首先打开必应的网站 , 然后通过持久的移动到中国的必应网站;这里的location是跳转位置 , 301代表永久的跳转 , 302代表的是临时的跳转;代码运行结果:
文章图片
可以发现 , urlopen是可以自动跳转的 。 总结:上例 , 通过urllib.request.urlopen方法 , 发起一个HTTP的GET请求 , WEB服务器返回了网页内容 。 响应的数据被封装到类文件对象中 , 可以通过read方法、readline方法、readlines方法获取数据 , status和reason属性表示返回的状态码 , info方法返回头信息 , 等等 。 User-Agent问题上例的代码非常精简 , 即可以获得网站的响应数据 。 urlopen方法只能传递url和data这样的数据 , 不能构造HTTP的请求 。 例如useragent 。 源码中构造的useragent如下:
文章图片
当前显示为:Python-urllib/3.6有些网站是反爬虫的 , 所以要把爬虫伪装成浏览器 。 随便打开一个浏览器 , 复制浏览器的UA值 , 进行伪装 。 UA值获取方法:打开浏览器的设置 。 选择高级 , 选择自定义UserAgent字符串 , 随意切换想要的UA值 。
- 创业邦Spotify能否持续称王?,流媒体音乐平台风云渐起
- 短视频▲王哥自媒体:短视频自媒体为什么你做赚不到收益,一定有这三个问题存在
- 秦绪文自媒体语音输入,高效转换,准确率高!,三款语音转文字工具
- 秦绪文自媒体没有任何水印,关键还免费,自媒体必备!,免费下载全网高清视频
- Power铂尔教育Mother获150万美元种子轮融资,母亲节,面向准妈妈们的健康课程流媒体平台Every
- 晓东在搞机还不赶紧进来了解一下!,这才是自媒体最想要的高性能创作笔记本
- 【自媒体】自媒体丨辛苦上班却还不如2小时赚上班8小时的钱,你做你也可以
- 「自媒体」自媒体运营即将干货分享,助力你自媒体创业,摆脱打工困局!
- 玩机课堂来看看!,微信一个隐藏彩蛋功能
- 小黑科技课堂TB小米MIUI12照明弹,已成安卓APP照妖镜,10分钟“越权”1.3万次