urllib,urllib3,爬虫一般开发流程

文章目录

  • urllib
    • urllib.request模块
      • urlopen方法
      • urlretrieve 方法
    • request对象
      • 请求头添加
      • 操作cookie
      • 设置代理
    • Response对象
    • urllib.parse模块
      • parse.quote()
      • parse.urlencode() & parse.parse_qs()
      • urlparse() & urlsplit()
    • urllib.error模块
    • urllib.robotparse模块
  • urllib3
    • 构造请求
    • Response content
    • JSON content
    • Binary content
    • Proxies
    • Request data
      • Headers
      • Query parameters
      • Form data
      • JSON
      • Files & binary data
  • 爬虫一般开发流程
    • 1. 不推荐的方法
    • 2. 推荐的方法

urllib

  • urllib是一个用来处理网络请求的Python标准库,包含四个模块
    • urllib.requests:请求模块,用于发起网络请求
    • urllib.parse:解析模块,用于解析URL
    • urllib.error:异常处理模块,用于处理request引起的异常
    • urllib.robotparse:用于解析robots.txt文件

urllib.request模块

  • request模块主要负责构造和发起网络请求,并在其中添加Headers,Proxy等
  • 利用它可以模拟浏览器的请求发起过程
  • 作用:
    1. 发起网络请求
    2. 添加Headers
    3. 操作cookie
    4. 使用代理

urlopen方法

urllib.request.urlopen(url,data=None,[timeout,]*,cafile=None,capath=None,cadefault=False,context=None)

  • urlopen是一个简单发送网络请求的方法,他接收一个字符串格式的url,他会向传入的url发送网络请求,然后返回结果,返回的是 http.client.HttpResponse 对象,这个对象是类文件句柄对象
    from urllib import request,parse #urllib是包
    #发送一个get请求 ok
    response = request.urlopen(url="http://httpbin.org/get") #测试接口
  • urloprn默认会发送get请求,当传入data参数时,则会发起POST请求,data参数是字节类型,或者类文件对象或者可迭代对象
    #发送post请求
    print(response.getcode()) #状态码
    print(response.info())
    print(response.read()) #读取网页源代码,以字节形式返回
    print(response.readline()) #读一行
    print(response.readlines()) #读多行
    response2 = request.urlopen(
    url = ‘http://httpbin.org/post’,
    data = b’username=xiaoge&password=123456’
    )
  • 还可以设置超时,如果请求超过设置时间,则抛出异常
  • timeout没有指定则用系统默认设置,timeout只对http,https以及ftp连接起作用
  • 它以秒为单位,比如可以设置timeout=0.1超过时间为0.1秒
    response = request.urlopen(url=“http://httpbin.org/get”,timeout=0.1)

urlretrieve 方法

  • 下载 html 页面到本地
from urllib import request
request.urlretrieve('http://www.baidu.com','baidu.html')	#第一个参数是 url,第二个参数是下载的地址和文件名,默认下载到项目根目录的上一级

urllib,urllib3,爬虫一般开发流程_第1张图片

request对象

  • 利用openurl可以发起最基本的请求,但这几个简单的参数不足以构建一个完整的请求,可以利用更强大的Request对象来构建更加完整的请求
headers = {
		'User-Agent' : '填请求头'
}
req = request.Request(‘http://www.baidu.com',headers=headers)	#这里 headers 要用关键字参数,不要用位置参数,因为第二个位置是 data 参数
response = request.urlopen(req)
print(response.read())
#b'\n
                    

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