使用Urllib爬取网页
将爬取到的网页以网页的形式保存在本地
1 | import urllib.request |
直接将对应信息写入本地文件
1 | import urllib.request |
其它常见用法
1 | # 返回与当前环境有关的信息 |
浏览器的模拟——Headers属性
有时候,无法爬取一些网页,会出现403错误,因为这些网页为了防止别人恶意采集其信息所以进行了一些反爬虫的设置。
可以设置一些Headers信息,模拟成浏览器去访问这些网站。
使用build_opener()修改报头
1 | import urllib.request |
使用add_header()添加报头
1 | import urllib.request |
超时设置
有时候,访问一个网页,如果该网页长时间未响应,那么系统就会判断该网页超时了,即无法打开该网页。
1 | import urllib.request |
HTTP协议请求实战
GET请求实例分析
- 构建对应的url地址,该url地址包含GET请求的字段名和字段内容等信息,并且url地址满足GET请求的格式,即“http://网址?字段名1=字段内容1&字段名2=字段内容2”
- 以对应的url为参数,构建Request对象
- 通过urlopen()打开构建的Request对象
- 按需求进行后续的处理操作,比如读取网页的内容、将内容写入文件等
1 | import urllib.request |
POST请求实例分析
- 设置好url网址
- 构建表单数据,并使用urllib.parse.urlencode对数据进行编码处理
- 创建Request对象,参数包括url地址和要传递的数据
- 使用add_header()添加头信息,模拟浏览器进行爬取
- 使用urllib.request.urlopen()打开对应的Request对象,完成信息的传递
- 后续处理,比如读取网页内容、将内容写入文件等
1 | import urllib.request |
代理服务器的设置
有时使用同一个IP去爬取同一个网站上的网页,久了之后会被该网站服务器屏蔽。
1 | import urllib.request |
异常处理神器——URLError实战
一般来说,产生URLError的原因有如下几种可能:
1) 连接不上服务器
2) 远程url不存在
3) 无网络
4) 触发了HTTPError
HTTPError
1 | import urllib.request |
URLError
1 | import urllib.request |
整合改进
1 | import urllib.request |