2024-06-16
Python
00

目录

python爬虫,爬取快代理的免费代理IP,并检测IP是否可用

python爬虫,爬取快代理的免费代理IP,并检测IP是否可用

爬虫流程

  1. 发送请求: 对于目标站网址发送请求 https://www.kuaidaili.com/free/
  2. 获取数据,获取服务器返回响应数据(网页源代码),response.text 获取响应体的文本数据
  3. 解析数据,提取我们想要的数据内容

示例代码:

# 导入数据请求模块 import requests # 第三方数据请求模块,需要 pip install requests # 导入 正则表达式模块 import re # 内置模块 lst = [] lst_1 = [] # 爬取多页的免费IP for page in range(1,11): # 1. 发送请求: 对于目标站网址发送请求 https://www.kuaidaili.com/free/ url = f'https://www.kuaidaili.com/free/inha/{page}/' # 确定请求的url地址 # 设置请求头,作用伪装python代码 headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36'} # 用requests模块里的get方法,对url地址发送请求,最后用response变量接收返回数据 response = requests.get(url, headers=headers) # <Response [200]> 请求之后返回response相应对象,200状态码表示请求成功 # 2. 获取数据,获取服务器返回响应数据(网页源代码),response.text 获取响应体的文本数据 # print(response.text) # 3. 解析数据,提取我们想要的数据内容 ''' 解析数据的方式: 正则: 可以直接提取字符串数据内容 下面两种方式需要把html字符串数据 进行转换 xpath: 根据标签节点,提取数据内容 css选择器: 根据标签属性提取数据内容 ''' # 正则提取数据 re.findall() 调用模块里面的方法 ip_list = re.findall('\"ip\": \"(.*?)\"', response.text, re.S) port_list = re.findall('\"port\":\s+\"(\d+)\"', response.text, re.S) print(ip_list) print(port_list) for ip, port in zip(ip_list, port_list): # print(ip, port) proxy = ip + ':' + port proxies_dict = { 'http': 'http://' + proxy, 'https': 'https://' + proxy, } print(proxies_dict) lst.append(proxies_dict) try: response = requests.get(url=url, proxies=proxies_dict, timeout=1) if response.status_code == 200: print('当前代理IP:', proxies_dict, '可以使用') lst_1.append(response) except: print('当前代理IP', proxies_dict, '请求超时,检测不合格') print('获取的代理IP数量是:', len(lst)) print('获取可用的代理IP数量', len(lst_1)) print('获取可用的代理IP', lst_1)

本文作者:柯南

本文链接:

版权声明:©2024 柯南 All rights reserved.