day01
1.关于urllib2库的基本使用
1.1 urlopen
- 作用:获取网页html源码
1.2 Request--重要
- 作用:通过Request实例对HTTP报头进行完善
- 参数
-
①url:字符串
-
② data(默认空):是伴随 url 提交的数据(比如要post的数据),同时 HTTP 请求将从 "GET"方式 改为 "POST"方式
-
③headers(默认空):是一个字典,包含了需要发送的HTTP报头的键值对
- User-Agent:发送网络请求的身份。
-
浏览器
就是互联网世界上公认被允许的身份,如果我们希望我们的爬虫程序更像一个真实用户,那我们第一步,就是需要伪装成一个被公认的浏览器。用不同的浏览器在发送请求的时候,会有不同的User-Agent头。 urllib2默认的User-Agent头为:Python-urllib/x.y(x和y是Python主版本和次版本号,例如 Python-urllib/2.7 - add_header()和get_header()
# User-Agent列表,也可以是代理列表 --- 为了反爬虫 ua_list = [ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1;rv2.0.1)Gecko/20100101 Firefox/4.0.1", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36", "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_11_1; 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" ] # 利用列表随机函数选择一个User-Agent user_agent = random.choice(ua_list) # 请求 request = urllib2.Request(url) # 给http添加一个报头 request.add_header("User-Agent",user_agent) # 获取已有报头的值 注意!!只能第一个字母大写,其他必须小写 print request.get_header("User-agent")
-
```
import urllib2
# 方式二:重构请求头
# 1.爬虫和反爬虫第一步:发请求带User-Agent
my_headers = {
"User-Agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
}
request = urllib2.Request("http://www.baidu.com",headers = my_headers)
response = urllib2.urlopen(request)
# 方式一
# 向指定url地址发请求,并返回服务器响应的类文件对象
# url + 请求方式(默认get,否则是post) + 超时限制时间s
# response = urllib2.urlopen("http://www.baidu.com")
# 服务器返回的类文件对象支持python文件对象的操作方法
# 1.read()方法--读取文件里的全部内容,返回字符串
html = response.read()
# 打印响应内容
# print html
# 答应响应码
print response.getcode()
# 防止重定向问题,返回实际数据url
print response.geturl()
# 返回服务器响应的报头信息
print response.info()
"""
知识点
1. urllib2默认的User-Agent:Python-urllib/2.7 --- 不利于
若爬虫,则需要重构
```













网友评论