当前位置: 首页 > news >正文

网站后台 栏目管理wordpress 留言汉化

网站后台 栏目管理,wordpress 留言汉化,wordpress设置更改,网站建设维护项目继上一章: CSDN 本次需要做的是进行有效ip的验证! 我们知道,从网页上爬取上千上万个ip之后,因为是免费的代理,所以,对这上千上万个ip进行验证有效性就需要考虑效率上的问题了; 而验证ip有效性的唯一办法,就是通过对网络发起请求;如果state200,就是有效,否则就是无效; 而上…

继上一章:

CSDN

本次需要做的是进行有效ip的验证!

我们知道,从网页上爬取上千上万个ip之后,因为是免费的代理,所以,对这上千上万个ip进行验证有效性就需要考虑效率上的问题了;

而验证ip有效性的唯一办法,就是通过对网络发起请求;如果state=200,就是有效,否则就是无效;

而上千万次的发起请求,如果通过多线程去做,势必会增加服务器的压力;

因此,只能通过异步去验证IP是否有效:

async def check_ip(session, proxy):"""...略去其它注释,同时函数的docstring也要更新..."""proxy_url = f"http://{proxy['ip']}:{proxy['port']}"try:async with session.get(url="http://httpbin.org/ip", timeout=1.5, proxy=proxy_url) as response:# 返回原始代理信息和有效性状态return proxy, response.status == 200except (aiohttp.ClientError, asyncio.TimeoutError):# 返回原始代理信息和无效状态return proxy, Falseasync def check_ip_main(proxies):"""检查IP有效性并返回所有有效的IP列表"""async with aiohttp.ClientSession() as session:tasks = [asyncio.create_task(check_ip(session, proxy)) for proxy in proxies]valid_proxies = []  # 初始化一个空列表来存放有效的代理for task in asyncio.as_completed(tasks):proxy, is_valid = await task  # 这里我们期望 check_ip 也返回对应的 proxy 信息if is_valid:#当返回来是True的时候,他就会加入到valid_proxies里面;valid_proxies.append(proxy)return valid_proxies

通过这两个方法:

 首先:

    一页url假设有100个ip,我们获取他之后,他就是成这样的格式:[{ip:122.250.32.1,port:5212},{///}...]

     所以,我们将它添加到异步列表里,再进行单个检查,返回true\false 就可以定义他的有效性了!

最后,将得到的有效ip添加到redis里即可;

这里是本章+上章的全部代码:

import logging
import asyncio
import aiohttp
import time
from bs4 import BeautifulSoup
from db.redis_task import temp_for_ippoollogger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)#请求头
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',
}# 异步获取URL的函数
async def fetch_url(session, url):try:async with session.get(url, timeout=3,headers=headers) as response:return await response.text()except aiohttp.ClientError as e:logger.exception("爬取相关url出错: %s", url)async def parse_html(html):'''解析代码,如果标题包含'89免费代理',如果包含"快代理"--->就是快代理:param html::return:'''soup = BeautifulSoup(html, 'html.parser')title = soup.find('title')if '89免费代理' in title.getText():table = soup.find('table', class_='layui-table')tbody = table.find('tbody')proxy_list = []rows = tbody.find_all('tr')for row in rows:proxy = {}cells = row.find_all('td')proxy["ip"] = cells[0].text.strip()proxy["port"] = cells[1].text.strip()proxy_list.append(proxy)return proxy_listasync def check_ip(session, proxy):"""...略去其它注释,同时函数的docstring也要更新..."""proxy_url = f"http://{proxy['ip']}:{proxy['port']}"try:async with session.get(url="http://httpbin.org/ip", timeout=1.5, proxy=proxy_url) as response:# 返回原始代理信息和有效性状态return proxy, response.status == 200except (aiohttp.ClientError, asyncio.TimeoutError):# 返回原始代理信息和无效状态return proxy, Falseasync def check_ip_main(proxies):"""检查IP有效性并返回所有有效的IP列表"""async with aiohttp.ClientSession() as session:tasks = [asyncio.create_task(check_ip(session, proxy)) for proxy in proxies]valid_proxies = []  # 初始化一个空列表来存放有效的代理for task in asyncio.as_completed(tasks):proxy, is_valid = await task  # 这里我们期望 check_ip 也返回对应的 proxy 信息if is_valid:#当返回来是True的时候,他就会加入到valid_proxies里面;valid_proxies.append(proxy)return valid_proxies# 异步操作,在其中打开会话和调用fetch任务
async def main(urls):async with aiohttp.ClientSession() as session:tasks = [fetch_url(session, url) for url in urls]for future in asyncio.as_completed(tasks):html = await futureif html:proxys = await parse_html(html)# 适当等待chek_ip_main 协程proxys_list= await check_ip_main(proxys)print(proxys_list)# URL 列表
urls = ["https://www.89ip.cn/index_{}.html".format(i+1) for i in range(25)]# 运行协程
stat =time.time()
asyncio.run(main(urls))
end =time.time()print(f'一共用了{(end-stat)}秒')

我做的效果图:

http://www.yayakq.cn/news/91404/

相关文章:

  • 制作网站过程网页设计类官网
  • 保定网站建设方案报价湖南省郴州市天气预报
  • 怎么不花钱建立网站手机网站开发c
  • 做网站最好成全视频免费观看在线看收索
  • 杭州个人网站建设响应式网站 手机站
  • 刷百度指数网站哈尔滨企业网站建设
  • google搜索引擎入口googleseo案例网站
  • 营销型网站与展示型网站网络管理系统的特点
  • 用手机能建网站吗台州建站网站模板
  • 网站服务器要求公司宣传网站建设
  • 做民宿哪个网站好免费的黄冈网站有哪些平台软件
  • wordpress主键外键seo免费培训
  • 织梦网站模板本地安装教程选择网站做友情链接的标准一般是
  • 聊城职业 网站建设与管理wordpress 图片自适应
  • 自建房设计网站推荐wordpress批量修改图片标题
  • 襄阳网站建设八零后c9设计软件
  • 计算机软件包含网站开发高端网站建设的价格
  • python一句做网站wordpress建站程序
  • 黑链 对网站的影响网站管理是什么工作
  • 企业建设营销型网站步骤网上装修公司哪家比较好
  • 四川城乡建设部网站首页飞猪关键词排名优化
  • 网站怎么做社区营销做孵化的网站
  • 北京华兴森茂印刷网站建设项目wordpress对接COS后网站变慢
  • 视频点播网站建设佛山百度关键词推广
  • 网站建设学的课程优化软件排行榜
  • 欢迎访问中国建设银行网站个人客户6安丘市住房与城市建设路网站
  • 律师的网站模板易语言可以做网站吗
  • 长沙 网站seo服务 网络服务烟台网站制作效果
  • 怎样在网站做两份简历宿迁盐城网站建设企业
  • 海淀石家庄网站建设中国站长之家爱站网