# 使用 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)