Python爬虫基础—代理IP

代理IP

一、什么是代理IP

代理IP又叫代理服务器,其功能就是代理用户去获取网络信息,形象的说,它是网络的中转站

二、提取代理IP

1. 芝麻代理:https://jahttp.zhimaruanjian.com/

2. 注册登录之后实名认证

3. 点击获取API选项

Python爬虫基础—代理IP_第1张图片

依次选择IP属性(如下图)

Python爬虫基础—代理IP_第2张图片

获取链接后将该链接放入API_URL中

import requests

API_URL = 'http://webapi.http.zhimacangku.com/getip?num=1&type=2&pro=&city=0&yys=0&port=1&pack=299708&ts=1&ys=1&cs=1&lb=1&sb=0&pb=45&mr=1®ions='
API_response = requests.get(url=API_URL)

print(API_response)

运行结果:<Response [200]>

我们知道API接口中是json数据,可以使用json模块的loads方法做转换

同时,requests模块也提供了对应的转换方法:json( )

import requests

API_URL = 'http://webapi.http.zhimacangku.com/getip?num=1&type=2&pro=&city=0&yys=0&port=1&pack=299708&ts=1&ys=1&cs=1&lb=1&sb=0&pb=45&mr=1®ions='
API_response = requests.get(url=API_URL)

IP_data = API_response.json()
print(IP_data, type(IP_data))

运行结果:{'code': 0, 'data': [{'ip': '121.232.72.175', 'port': 4231, 
'expire_time': '2023-05-06 19:37:37', 'city': '江苏省南通市', 'isp': '电信'}], 
'msg': '0', 'success': True}
 <class 'dict'>

三、构建IP地址

IP地址的形式是 http://ip: port

ip(地址)、port(端口)

例如百度网址:‘https://www.baidu.com/’ —— 使用ip: port映射而来

百度的ip(地址):202.108.22.5

百度的port(端口号):80

由上一步中我们得到的API_data中的字典中data这个键对应的值是一个列表,列表中又是一个字典,我们需要拿到data这个键对应的值中的ip键和port键分别对应的值,从而构建IP地址

Ip = IP_data['data'][0]['ip']
Port = IP_data
proxy_ip = {
	'http': f'http://{Ip}: {Port}'
	'https': f'http://{Ip}: {Port}'
}
print(proxy_ip)

运行结果:{'http': 'http://113.237.230.181:4231', 'https': 'http://113.237.230.181:4231'}

为什么要再将代理ip构建成字典

无论我访问的网站是http协议,还是https协议,统统都走http协议的代理ip

我们访问某个网站,就是ip地址点对点的信息传输

四、爬取豆瓣电影网站,获取网页源代码

URL = 'https://movie.douban.com/top250?start=0'
Headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'
}
response = requests.get(url=URL, headers=Headers, proxies=proxy_ip)
print(response.status_code)
print(response.text)

五、代理IP池

一次性获取N多个代理IP集中存放在一起,同时添加监控机制。时刻检测代理IP的状况,如果过期了就丢掉,代理IP数量少于一定的阈值再请求补充。代理IP池为爬虫提供源源不断的代理IP,一次性获取一个或多个代理IP供爬虫使用,将代理IP价值最大化

六、使用死循环让网站封IP

import requests

URL = 'https://movie.douban.com/top250?start=0'
while True:
    Headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'
    }
    response = requests.get(url=URL, headers=Headers)
    if response.status_code == 200:
        continue
    else:
        print(response.status_code)
        break

你可能感兴趣的:(爬虫基础,python,爬虫,tcp/ip)