Python3网络爬虫开发实战(2)爬虫基础库

一、urllib

urllib 类似于 python 底层构建请求,构建相对于其他的库来说较为复杂,不过 urllib 解析链接非常好用

1. urlparse 实现 URL 的识别和分段

如果需要合并 params 和 query 可以使用 urlsplit

from urllib.parse import urlparse

urlparse('https://www.baidu.com/')

# ParseResult(scheme='https', netloc='[www.baidu.com](https://www.baidu.com/)', path='/', params='', query='', fragment='')

2. urlunparse 用于构造 URL

urlunparse 这个方法接收的参数是一个可迭代对象,且其长度必须为 6;同样的,如果需要合并 params 和 query 可以使用 urlunsplit

from urllib.parse import urlunparse

data = ['https','www.baidu.com','index.html','user','a=6','comment']

urlunparse(data)
# https://www.baidu.com/index.html;user?a=6#comment

3. urljoin 用于两个链接的拼接

urljoin 首先会解析 new_url,判断其 scheme,netloc,path 是否出现了缺失,如果确实使用 base_url 中的 scheme,netloc,path 对应缺失部分代替;

from urllib.parse import urljoin

base_url = 'https://www.baidu.com'
new_url = 'FAQ.html'

urljoin(base_url, new_url)
# https://www.baidu.com/FAQ.html

4. urlencode 将 params 字典序列化为 params 字符串

from urllib.parse import urlencode

params = {
   
    'name': 'germey',
    'age': 2,
}

base_url = 'https://www.baidu.com?'
base_url + urlencode(params)
# https://www.baidu.com?name=germey&age=2

5. parse_qs 和 parse_qsl 用于将 params 字符串反序列化为 params 字典或列表

from urllib.parse import parse_qs, parse_qsl

params = 'name=germey&age=25'

parse_qs(params, separator='&')
# {'name': ['germey'], 'age': ['25']}

parse_qsl(params, separator='&')
[('name', 'germey'), ('age', '25')]

6. quote 和 unquote 对 URL的中文字符进行编码和解码

from urllib.parse import quote, unquote

url = "https://www.baidu.com/s?wd=爬虫"

# utf8编码,指定安全字符
quote(url, safe=";/?:@&=+$,", encoding="utf-8")
# https://www.baidu.com/s?wd=%E7%88%AC%E8%99%AB

# gbk编码,指定安全字符
quote(url, safe=";/?:@&=+$,", encoding="gbk")
# https://www.baidu.com/s?wd=%C5%C0%B3%E6

# utf8解码
unquote('https://www.baidu.com/s?wd=%E7%88%AC%E8%99%AB', encoding='utf-8')
# https://www.baidu.com/s?wd=爬虫

# gbk解码
unquote('https://www.baidu.com/s?wd=%C5%C0%B3%E6', encoding='gbk')
# https://www.baidu.com/s?wd=爬虫

二、requests

1. GET 请求

测试 URLwww.httpbin.org/get

cookies 可以单独设置,也可以放在 headers 的 cookie 字段下传入请求之中,timeout 可以控制超时时间,headers 是请求头,params 是参数构建完整的 url;

import requests

params = {
   }
headers = {
   }
cookies = {
   }

# vertify 设置为 False 可以避免 ssl 认证
requests.get(url
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值