python爬虫入门——urllib模块中request的使用和实例

目录

  • 1. urllib模块介绍
    • 1.1 简介
    • 1.2 区别:requests模块
  • 2. request模块使用
    • 2.1 urlopen函数
    • 2.2 Request的操作
    • 2.3 加入User-Agent
    • 2.4 什么是User-Agent,如何查看
    • 2.5 User-Agent随机导入
  • 3.总结

1. urllib模块介绍

1.1 简介

 urllib是python内置的HTTP请求库.包括以下模块
(1)urllib.request 请求模块
(2)urllib.error 异常处理模块
(3)urllib.parse url解析模块
(4)urllib.robotparser robots.txt解析模块

1.2 区别:requests模块

 requests和request是两个不同的模块!!request在urllib中,是python官方的库,在python2中为urllib2,urllib2 在 python3.x 中被改为urllib.request。
 requests则大神上传的库,比官方库request更好用。。。

当然,本文主要介绍request模块。

2. request模块使用

2.1 urlopen函数

from urllib import request
response = request.urlopen("http://www.baidu.com")
html = response.read().decode('utf8')
print(html)

 访问百度的网站,爬取网站的信息。打印的信息就是网页的内容,html文件的内容。
 通过开发者工具:ctrl+F12查看百度网站的源码,发现是一样的,这样就获取到了网页的信息了。

2.2 Request的操作

from urllib import request

# 如果要执行更加复杂的操作,需要创建一个Requests的对象。。。
# url 作为request的参数,返回一个Request的对象
requests = request.Request("http://www.baidu.com")
# Request对象作为urlopen()方法的参数,发送给服务器并接收响应
response = request.urlopen(requests)
html = response.read().decode('utf8')
print(html)

 创建一个requests的对象,作为urlopen函数的输入参数。这样做的好处是,你可以更加真实地访问一个网站。

2.3 加入User-Agent

from urllib import request

header = {"User-Agent": "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"}
requests = request.Request("http://www.baidu.com", headers=header)
response = request.urlopen(requests)
html = response.read().decode('utf8')
print(html)

 User-Agent以作为字典header的一个元素,加入到Request函数的headers参数。实际上就是告诉访问的服务器,你使用的浏览器是型号是什么,在什么操作系统下等等。因为可能存在的一些反爬措施,这样访问可以更加真实。

2.4 什么是User-Agent,如何查看

 User-Agent的中文名是用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。网站可以通判断 UA 来给不同的操作系统、不同的浏览器发送不同的页面,对于爬虫来说,UA就是标明身份的第一层标识。
 在网站输入about:version,查看对应浏览器的User-Agent。如图,我使用的是QQ浏览器。

在这里插入图片描述

2.5 User-Agent随机导入

当然,有些时候你并不想在使用的时候还需要找User-Agent,或者你使用脚本的时候希望它是随机的。
(1)可以这样:使用random随机在列表中获取User-Agent

from urllib import request
import random
ua_list = [
    "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36",
    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36",
    "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:21.0) Gecko/20100101 Firefox/21.0",
    "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36"
    "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2225.0 Safari/537.36"
]
header = {"User-Agent": random.choice(ua_list)}
requests = request.Request("http://www.baidu.com", headers=header)
response = request.urlopen(requests)
html = response.read().decode('utf8')
print(html)

(2)使用fake-useragent模块,随机获得User-Agent

from urllib import request
import requests
from fake_useragent import UserAgent

url = "http://www.baidu.com"
ua = UserAgent()	# 获取User-Agent
requests = request.Request(url)
requests.add_header("User-Agent", ua.random)	# 随机选择库中的User-Agent
requests.add_header("Connection", "keep-alive")
test = requests.get_header(header_name="User-agent")
print(test)
test = requests.get_header(header_name="Connection")
print(test)
response = request.urlopen(requests)
print(response.code)
print(response.read())

requests.add_header可以用于添加header参数至request,requests.add_header用于获取参数。

3.总结

 学习request模块,路漫漫其修远兮。学习时最好将代码都敲一遍,才有更深刻的印象。具体函数的参数可以参照百度和官方文档,里面讲解的都很详细。

你可能感兴趣的:(python,python,爬虫)