python3爬虫初步——http请求头部的构造

利用python3写爬虫,因为python3已经没有了urllib2,仅有urllib,区别就在于urllib2相当于urllib.request,调用urllib2的方法时可以通过urllib.request调用。
爬取百度首页时,收集到消息之后要对信息进行解码,发现编码方式为gb2312,运用decode方法进行解码,得到首页源代码。
关于http请求头信息,推荐使用浏览器插件SwitchyOmega进行代理,之后用Fiddler进行抓包分析,从而提取出头部的基本信息。

# -*- coding:utf-8 -*-
import urllib.request as urllib2
# user_agent是爬虫与反爬虫斗争的第一步
ua_headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0',
}
# 通过Request()方法构造一个请求对象
url = r'https://www.baidu.com//'
request = urllib2.Request(url, headers = ua_headers)
print(request.headers,request.type,request.data)

# 向指定的url地址发送请求,并返回服务器响应的类文件对象
response = urllib2.urlopen(request)

# 服务器返回的类文件对象支持python文件对象的操作方法
html = response.read()
print(html.decode('gb2312'))

还可以更加高级一点的构造user-agent,利用random模块随机的选择列表中的信息。
代码如下:

# -*- coding:utf-8 -*-
import urllib.request as urllib2
import random

url = r'http://www.baidu.com/'

# 用于模拟http头的User-agent
ua_list = [
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv2.0.1) Gecko/20100101 Firefox/4.0.1",
        "Mozilla/5.0 (Windows NT 6.1; rv2.0.1) Gecko/20100101 Firefox/4.0.1",
        "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11",
        "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"
]

user_agent = random.choice(ua_list)

request = urllib2.Request(url=url)
# 将头添加进去
request.add_header('User-Agent', user_agent)
# 输出获取的头部信息中的user-agent 要注意User-agent的写法
print(request.get_header('User-agent'))

写爬虫最关键的便是与反爬虫之间的斗争,因而我们要养成良好的习惯,学会构造头部。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangbowj123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值