【2】数据采集 - urllib模块

2018-11-24  本文已影响0人  夏夏夏夏颜曦

python2环境下关于urllib2的使用可以学习这篇文章。本文主要针对python3环境下使用urllib模块实现简单程序爬虫。
链接:https://www.jianshu.com/p/31833117b34b

urllib模块的使用

1.数据编码处理

# 引入依赖模块
from urllib import request
# 向服务器发送请求,获取响应对象
response = request.urlopen("https://www.baidu.com")
# 获取包含在响应中的数据
html = response.read()
# 解码
html = html.decode('utf-8')
# 打印结果
print(html)

结果为:

<html>
<head>
    <script>
        location.replace(location.href.replace("https://","http://"));
    </script>
</head>
<body>
    <noscript><meta http-equiv="refresh" content="0;url=http://www.baidu.com/"></noscript>
</body>
</html>

Process finished with exit code 0
# 引入依赖模块
from urllib import request
import chardet
# 向服务器发送请求,获取响应对象
response = request.urlopen("https://www.80s.tw/")
# 获取包含在响应中的数据
html = response.read()
# 验证编码
encoding = chardet.detect(html).get('encoding')
# 解码:
html = html.decode(encoding)
# 打印结果
print(html)

2.请求对象包装

# 引入依赖的模块
from urllib import request
import chardet
# 将请求包装成请求对象
req = request.Request('https://www.80s.tw/')
# 通过 urlopen 发送请求对象给服务器,得到服务器响应数据
response = request.urlopen(req)
# 得到响应数据
html = response.read()
# 编码检测并解码
html = html.decode(chardet.detect(html).get('encoding'))
print(html)

3.请求头设置

--- Accept 接受响应数据的格式
--- Accept-Encoding 接受响应数据的编码
--- Accept-languate 接受响应数据的语言环境
--- Connection 是否保持连接
--- Cookie 会话跟踪数据
--- Upgrade-insecure-Requests 是否安全请求
--- Referer 反外链限制
--- User-agent 浏览器代理
--- more..

from urllib import request
import chardet
import random
# 定义多个 user-agent
my_headers = [
{'User-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60'},
{'User-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2
(KHTML, like Gecko) Version/5.1.7 Safari/534.57.2'},
{'User-agent': 'Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10)
Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10'},
{'User-agent': 'Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1)
Gecko/20061208 Firefox/2.0.0 Opera 9.50'},
]
# 包装请求# 爬虫请求头手工添加:添加方式 1
req = request.Request('https://www.80s.tw/',
headers=random.choice(my_headers))
# 请求数据
response = request.urlopen(req)
# 获取并验证编码
html = response.read()
encoding = chardet.detect(html).get('encoding')
html = html.decode(encoding)
# 打印结果
print(html)
上一篇下一篇

猜你喜欢

热点阅读