构建User-Agnet代理池

自定义UA代理池

1
2
3
4
5
6
7
8
9
10
11
12
13
ua_list = [
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11',
'User-Agent:Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11',
'Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)',
'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0',
' Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1',
'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1',
' Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
]

安装相关第三方库

  • pip install fake-useragent

用法示例

1
2
3
4
5
6
7
8
9
from fake_useragent import UserAgent
#实例化一个对象
ua=UserAgent()
#随机获取一个ie浏览器ua
print(ua.ie)
print(ua.ie)
#随机获取一个火狐浏览器ua
print(ua.firefox)
print(ua.firefox)
  • 输出结果
    1
    2
    3
    4
    5
    6
    7
    #随机获取ie的ua信息
    Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/4.0; GTB7.4; InfoPath.3; SV1; .NET CLR 3.1.76908; WOW64; en-US)
    Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0

    #随机获取火狐的ua信息
    Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0
    Mozilla/5.0 (Windows NT 5.0; rv:21.0) Gecko/20100101 Firefox/21.0

URL编码/解码

Python实现编码与解码

  • Python 的标准库urllib.parse模块中提供了用来编码和解码的方法,分别是 urlencode()unquote()方法。

编码urlencode()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from urllib import parse

# 构建查询字符串字典
query_string = {
'wd': '中国大学排名'
}
# 调用parse模块的urlencode()进行编码
result = parse.urlencode(query_string)
# 使用format函数格式化字符串,拼接url地址
url = 'http://www.baidu.com/s?{}'.format(result)
# 也可以像下面这种方法
url1 = f'http://www.baidu.com/s?{result}'
print(url)
print(url1)

运行如下:

  • 除了使用urlencode()方法之外,也可以使用quote(string)方法实现编码
    1
    2
    3
    4
    5
    6
    # 使用 quote(string) 方法实现编码
    query_string1 = '爬虫'
    result1 = parse.quote(query_string1)
    url2 = 'http://www.baidu.com/s?wd={}'.format(result1)
    print(url2)
    # quote() 只能对字符串编码

解码unquote(string)

  • 这里我们以上面生成的URL为例
    1
    2
    3
    4
    # 解码unquote(string)
    url3 = 'http://www.baidu.com/s?wd=%E4%B8%AD%E5%9B%BD%E5%A4%A7%E5%AD%A6%E6%8E%92%E5%90%8D'
    result = parse.unquote(url3)
    print(result)
    可以看到解码成功:
    图片

URL地址拼接方式

1
2
3
4
5
6
7
8
9
10
11
# 1、字符串相加
baseurl = 'http://www.baidu.com/s?'
params='wd=%E7%88%AC%E8%99%AB'
url = baseurl + params
# 2、字符串格式化(占位符)
params='wd=%E7%88%AC%E8%99%AB'
url = 'http://www.baidu.com/s?%s'% params
# 3、format()方法
url = 'http://www.baidu.com/s?{}'
params='wd=%E7%88%AC%E8%99%AB'
url = url.format(params)
  • 控制台输出结果如下:
    1
    2
    3
    http://www.baidu.com/s?wd=%E7%88%AC%E8%99%AB
    http://www.baidu.com/s?wd=%E7%88%AC%E8%99%AB
    http://www.baidu.com/s?wd=%E7%88%AC%E8%99%AB