美文网首页程序媛python
爬虫day01-urllib2库基础使用

爬虫day01-urllib2库基础使用

作者: 喵鸢 | 来源:发表于2018-01-09 00:57 被阅读9次

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 --- 不利于
若爬虫,则需要重构
```

2.关于urllib2中的GET和POST请求

2.1

相关文章

网友评论

    本文标题:爬虫day01-urllib2库基础使用

    本文链接:https://www.haomeiwen.com/subject/zuninxtx.html