问题背景:
使用Python编写爬虫时,经常会遇到反爬机制,例如网站要求必须使用浏览器访问。就像下面的403错误:
或者下面这种错误信息:
一般来说,这是遇到反爬机制了,对方要求使用浏览器访问。这时可以在爬虫程序中修改代码,设置UserAgent,假装自己是浏览器。很多人会到网上搜可用的UserAgent,但是搜到的UA也可能无法使用,只好多搜几个试试。也有时候,即使成功假装自己是浏览器,也可能被封,因为爬虫的访问速度要比人类使用浏览器正常访问快很多,这对服务器来说是不正常的。
可以想办法获取本地浏览器的真实UA,然后写到爬虫代码里,因为是真实的UA,所以基本上不会被反爬机制限制。如果本地安装了多个浏览器的话,可以全部整理出来,然后每次爬取网页时从多个UA中随机选择一个,这样的话安全系数就提高了很多,不容易被拦截了。
获取浏览器UserAgent:
如果使用Chrome浏览器(这也是在编写爬虫程序之前分析目标网页常用的浏览器)的话,可以在地址栏中输入about:version,然后在页面中即可看到UA,复制下来就可以了。
如果是360浏览器的话,可以使用下面的命令查看UA:
好像Edge、IE、FireFox这样的浏览器不支持about:version指令,如果有朋友知道类似指令的话欢迎留言告知,让更多朋友受益。
还有个万能的方法是使用Javascript代码查看本地浏览器的UA。编写一个网页,内容如下,画红线的地方是重点,获取UA并显示在页面上。
然后使用不同的浏览器打开这个网页,就可以看到UA了。
实战应用:
多准备几个不同浏览器的UA,然后编写下面的代码爬取糗事百科首页上的段子文本。因为糗事百科首页更新很快,这里就不贴爬取结果了,大家可以自己运行试一试。爬取页面上的图片也比较简单,公众号里以前推送过很多类似的案例,就不再重复了。相关文章可以按照后面的温馨提示进入历史文章列表进行查找。
温馨提示
进入公众号,通过菜单“最新资源”==>“历史文章”可以快速查看分专题的文章列表,通过“最新资源”==>“微课专区”可以观看Python微课,通过“最新资源”==>“培训动态”可以查看近期Python培训安排,通过“最新资源”==>“教学资源”可以查看Python教学资源。
--------董付国老师Python系列图书--------
1)《Python程序设计(第2版)》清华大学出版社(2018年8月第9次印刷)https://item.jd.com/11949168.html
2)《Python可以这样学》清华大学出版社(2018年7月第6次印刷)(本书已在台湾发行繁体版)https://item.jd.com/12040511.html
3)《Python程序设计基础(第2版)》清华大学出版社(2018年9月第6次印刷)https://item.jd.com/12319738.html
4)《中学生可以这样学Python》清华大学出版社(2018年9月第3次印刷)https://item.jd.com/12258900.html
5)《Python程序设计开发宝典》清华大学出版社(2018年2月第3次印刷)https://item.jd.com/12143483.html
6)《玩转Python轻松过二级》清华大学出版社(2018年7月第3次印刷)https://item.jd.com/12361144.html
7)《Python程序设计基础与应用》机械工业出版社(2018年9月第1次印刷)https://item.jd.com/12433472.html?dist=jd
8)《Python程序设计实验指导书》清华大学出版社(预计2019年1月出版)
9)《Python编程基础与案例集锦(中学版)》电子工业出版社(预计2019年2月出版)
董老师127课免费视频地址: https://pan.baidu.com/s/1jJeAs8Q 密码: px59
“Python小屋”免费资源汇总(截至2018年11月28日)
系列教学PPT:
1900页Python系列PPT分享一:基础知识(106页)
1900页Python系列PPT分享二:Python序列(列表、元组、字典、集合)(154页)
1900页Python系列PPT分享三:选择与循环结构语法及案例(96页)
1900页Python系列PPT分享四:字符串与正则表达式(109页)
1900页Python系列PPT分享五:函数设计与应用(134页)
1900页Python系列PPT分享六:面向对象程序设计(86页)
1900页Python系列PPT分享七:文件操作(132页)
1900页Python系列PPT分享八:异常处理结构与程序调试、测试(70页)
报告PPT(163页):基于Python语言的课程群建设探讨与实践
2000页Python系列PPT分享九:(GUI编程)(122页)