Python原来如此美丽|Request & Parsel
2023-03-14 22:48:14 时间
学习Python的Request与Parsel模块今天分享一个爬取代理节点的小脚本,我们在使用爬虫的时候,可以通过设置一些代理避免(或者尽可能避免)我们的服务器IP被封掉,可是这些代理从哪里来呢?
这里分享一个获取代理数据的脚本。至于设置Proxy的原理,大家可以自己查阅。动手干起来...
准备爬虫脚本
安装依赖包
# -*- coding: utf-8 -*-
"""
File Name: main
Description :
Author : Xuexiaobai
date: 2020-02-20
Change Activity: 2020-02-20
IDE: PyCharm
"""
import requests,parsel
basePage= "https://www.kuaidaili.com/free/inha/"
firstPage="https://www.kuaidaili.com/free/inha/1/"
def RequestHandler(url):
content = requests.get(url, headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko'})
if content.status_code != 200:
return ""
else:
return content.text
def GetElementSelectorObj(htmlData, extractRule,isSelector):
htmlData = parsel.Selector(htmlData)
if isSelector:
return htmlData.xpath(extractRule)
else:
return htmlData.xpath(extractRule).extract()
def CheckIp(proxylist):
can_use=[]
for proxy in proxylist:
try:
requests.get('https://www.baidu.com',
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko'},
proxies=proxy,
timeout=0.1)
can_use.append(proxy)
except Exception as e:
print(e)
return can_use
proxyList = []
for i in range(1,1000,1):
baseurl=basePage+str(i)
for proxy_line in GetElementSelectorObj(RequestHandler(firstPage),'//table[@class="table table-bordered table-striped"]/tbody/tr', True):
proxies = {}
httpSchema = proxy_line.xpath('./td[4]/text()').extract_first()
proxyAddr = proxy_line.xpath('./td[1]/text()').extract_first()
proxyPort = proxy_line.xpath('./td[2]/text()').extract_first()
proxies[httpSchema] = proxyAddr + ":" + proxyPort
proxyList.append(proxies)
print("【快代理】正在检查第{0}页代理,有{1}个代理可以使用.".format(i,len(CheckIp(proxyList))))
proxyList=[] # 清空列表
运行脚本
source $(PWD)/venv/bin/activate
nohup python main.py
查看日志
刚开始的时候,可用率还是很高的,不信你可以试试...
【快代理】正在检查第1页代理,有15个代理可以使用.
【快代理】正在检查第2页代理,有0个代理可以使用.
【快代理】正在检查第3页代理,有0个代理可以使用.
【快代理】正在检查第4页代理,有0个代理可以使用.
【快代理】正在检查第5页代理,有0个代理可以使用.
【快代理】正在检查第6页代理,有0个代理可以使用.
【快代理】正在检查第7页代理,有0个代理可以使用.
【快代理】正在检查第8页代理,有15个代理可以使用.
...
是不是看着很简单,但是对于小白来说,知识点还是不少的,简单的总结一下:
- 温习了一下代理基本原理和requests包proxy的使用方法
- 学习了一下Parsel如何通过XPATH获取HTML元素
- 得到一个免费代理服务地址的网站(哈哈)
相关文章
- python 数据类型
- Python 交叉编译
- python Map 排序
- python 安装pypcap
- Python瞎记
- python--filter()函数
- python调用hessian
- python 3 format
- 【python】魔术方法
- 使用Python语言实现Transcribe Streaming的websocket协议
- python 数据请求
- 基于 Nitro Enclave 构建安全的可信执行环境
- Python基础篇
- Python 分类导航
- python--函数1
- python操作数据库
- Python数据结构
- Python数据结构
- Python 容器(Collections)
- Python error collections