- # 使用 urllib
- import urllib.request
-
- # 定义 header
- headers = {
- # UA 最基本的防爬识别
- 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
- }
-
- # 1、定义一个 https 的 url
- url = 'https://www.baidu.com'
-
- # 2、定义一个 Request 对象,urlopen 方法并不能直接带 header。
- # 细节:为什么这里需要写 url=url 而有的地方不需要?因为 Request 构造方法传参顺序问题 Request(url, data=None, headers={} ...)
- request = urllib.request.Request(url=url, headers=headers)
-
- # 3、获取 Handler 对象
- handler = urllib.request.HTTPHandler()
-
- # 4、获取 opener 对象
- opener = urllib.request.build_opener(handler)
-
- # 5、调用 open 方法
- response = opener.open(request)
-
- # 6、获取内容字符串
- content = response.read().decode('utf-8')
-
- # 7 输出
- print(content)
-
- # 使用 urllib
- import urllib.request
- # 使用 random
- import random
-
- # 定义 header
- headers = {
- # UA 最基本的防爬识别
- 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
- }
-
- # 方式一:字典形式的IP代理(https://www.kuaidaili.com/free/)
- # proxies = { 'http': '112.14.47.6:52024' }
-
- # 方式二:定义一个代理池,然后随机从代理池中获取一个代理
- proxies_pool = [
- { 'http':'112.14.47.6:52024' },
- { 'http':'61.164.39.68:53281' }
- ]
- proxies = random.choice(proxies_pool)
-
- # 输出当前代理
- print(proxies)
-
- # 1、定义一个 https 的 url
- url = 'https://www.baidu.com/s?wd=ip'
-
- # 2、定义一个 Request 对象,urlopen 方法并不能直接带 header。
- # 细节:为什么这里需要写 url=url 而有的地方不需要?因为 Request 构造方法传参顺序问题 Request(url, data=None, headers={} ...)
- request = urllib.request.Request(url=url, headers=headers)
-
- # 3、获取 Handler 对象
- handler = urllib.request.ProxyHandler(proxies=proxies)
-
- # 4、获取 opener 对象
- opener = urllib.request.build_opener(handler)
-
- # 5、调用 open 方法
- response = opener.open(request)
-
- # 6、获取内容字符串
- content = response.read().decode('utf-8')
-
- # 7 保存,可以方便校验IP是否代理成狗
- with open('ip.html', 'w', encoding='utf-8') as f:
- f.write(content)
-