三、Urllib库
1. Urllib基础
方法
| urlretrieve() | 爬一个网页 |
|---|---|
| urlcleanup() | 清除urlretrieve()生成的缓存 |
| info() | 展现基本环境信息 |
| getcode() | 当前网页的状态码 |
| geturl() | 当前网页的网址 |
1 | import urllib.request |
2. 超时设置 并抛出异常
有些网站反应快,我们希望2秒钟没有反应,则判断为超时,那么此时,timeout的值就是2,再比如,有些网站服务器反应慢,那么此时,我们希望100秒没有反应,才判断为超时,那么此时timeout的值就是100。
1 | import urllib.request |
3. 自动模拟HTTP请求
客户端如果要与服务器端进行通信,需要通过http请求进行,http请求有很多种,我们在此会讲post与get两种请求方式。比如登陆、搜索某些信息的时候会用到。
1 | import urllib.request |
自动提交post请求
首先登陆这个网站:www.iqianyue.com/mypost/ 并分析源码
1 | import urllib.request |
Tips:
- 找到登录,只需要关注
form里的name属性 - 找不到登录,隐藏在js文件中,我们需要通过 抓包 来进行分析
4. 异常处理
| 301 Moved Permanently | 重定向到新的URL,永久性 |
|---|---|
| 302 Found | 重定向到临时的URL,非永久性 |
| 304 Not Modified | 请求的资源未更新 |
| 400 Bad Request | 非法请求 |
| 401 Unauthorized | 请求未经授权 |
| 403 Forbidden | 禁止访问 |
| 404 Not Found | 未找到对应页面 |
| 500 Internal Server Error | 服务器内部错误 |
| 501 Not Implemented | 服务器不支持实现请求所需要的功能 |
URLError和HTTPError
1 | import urllib.error |
5. 浏览器伪装技术
我们可以试试爬取csdn博客,我们发现会返回403,因为对方服务器会 对爬虫进行屏蔽。此时,我们需要伪装成浏览器才能爬取。
浏览器伪装我们一般通过报头进行,接下来我们通过实战分析一下。
如果没有伪装会报403禁止访问错误
1 | import urllib.request |
6. Python新闻爬虫实战
需求:将新浪新闻首页(http://news.sina.com.cn/)所有新闻都爬到 本地。
思路:先爬首页,通过正则获取所有新闻链接,然后依次爬各新闻,并
存储到本地。
1 | import urllib.request |
作业三: 提取出版社信息并写入文件中
1 | from urllib import request |

