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

专业做蛋糕视频网站wordpress插件 采集

专业做蛋糕视频网站,wordpress插件 采集,精品网站建设比较好,常州网络排名优化爬取cos猎人 数据库管理主要分为4个模块#xff0c;代理获取模块#xff0c;代理储存模块#xff0c;代理测试模块#xff0c;爬取模块 cos猎人已经倒闭#xff0c;所以放出爬虫源码 api.py 为爬虫评分提供接口支持 import requests import concurrent.futures import …爬取cos猎人 数据库管理主要分为4个模块代理获取模块代理储存模块代理测试模块爬取模块 cos猎人已经倒闭所以放出爬虫源码 api.py 为爬虫评分提供接口支持 import requests import concurrent.futures import redis import random import flask # 导入flask模块 from flask import request # 获取url地址中查询参数 from flask import jsonify # 可以把对象转换为字符串 REDIS_HOST 127.0.0.1 REDIS_PORT 6379 REDIS_DATABASE 0 REDISOBJECT proxysss时间间隔配置 GETTER_PROXY 60*5 VERIFY_PROXY 60*3class RedisClient:def __init__(self, hostREDIS_HOST, portREDIS_PORT, dbREDIS_DATABASE):self.db redis.Redis(hosthost, portport, dbdb, decode_responsesTrue)def exists(self, proxy):判断传入代理有没有存输到数据库有TRUE,没有Falseis比not优先级高return not self.db.zscore(REDISOBJECT, proxy) is Nonedef add(self, proxy, score10):添加代理到数据库设置初始分数为10分决定是否加入新代理if not self.exists(proxy):return self.db.zadd(REDISOBJECT, {proxy: score})def random(self):随机选择一个代理尝试获取评分为100分的代理获取指定范围的代理如果数据库没有代理就提示数据库为空proxies self.db.zrangebyscore(REDISOBJECT, 100, 100)if len(proxies):return random.choice(proxies)proxies self.db.zrangebyscore(REDISOBJECT, 1, 99)if len(proxies):return random.choice(proxies)print(-----数据库为空----)def decrease(self, proxy):传入代理如果检测不过关降低代理分数self.db.zincrby(REDISOBJECT, -10, proxy)score self.db.zscore(REDISOBJECT, proxy) # 查询分数if score 0:self.db.zrem(REDISOBJECT, proxy) # 删除代理def max(self, proxy):检测代理可用就将代理设置最大分数return self.db.zadd(REDISOBJECT, {proxy: 100})def count(self):获取数据库中代理的数量return self.db.zcard(REDISOBJECT)def all(self):获取所有代理返回列表proxies self.db.zrangebyscore(REDISOBJECT,1,100)if proxies:return proxieselse:print(-----数据库无代理----)def count_for_num(self,number):指定数量获取代理返回一个列表all_proxies self.all()proxies random.sample(all_proxies,knumber)#随机取数据不重样return proxiesdef get_proxy():return requests.get(http://127.0.0.1:5010/all).json()def delete_proxy(proxy):requests.get(http://127.0.0.1:5010/delete/?proxy{}.format(proxy))# getHtml() # def verify_thread_pool(): # 线程池检测代理 # 1.从数据库中取到所有代理 # 2.用线程池检测代理 # proxies_list client.all() # 列表 # with concurrent.futures.ThreadPoolExecutor(max_workers10) as executor: # for proxy in proxies_list: # executor.submit(verify_proxy, proxy)# # # TEST_URL https://www.baidu.com/ # headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36} # # # # # def verify_proxy(proxy): # 检测代理是否可用 # proxies { # http: http:// proxy, # https: https:// proxy # } # try: # response requests.get(urlTEST_URL, headersheaders, proxiesproxies, timeout2) # if response.status_code in [200, 206, 302]: # #判断请求返回的状态码是否成功 # 请求成功设为100分,调用max # 请求不成功将代理降分,调用decrease # client.max(proxy) # print(***代理可用***, proxy) # else: # client.decrease(proxy) # print(--状态码不合法--, proxy) # except: # 请求超时表示代理不可用 # client.decrease(proxy) # print(请求超时) # # # 检测速度太慢引入多任务多线程 # def verify_thread_pool(): # 线程池检测代理 # 1.从数据库中取到所有代理 # 2.用线程池检测代理 # proxies_list client.all() # 列表 # with concurrent.futures.ThreadPoolExecutor(max_workers10) as executor: # for proxy in proxies_list: # executor.submit(verify_proxy, proxy) # # if __name__ __main__: # # proxy [ # # 45.234.63.220:999, # # 60.168.255.69:8060, # # 65.108.27.185:3128, # # 62.162.91.205:3129, # # 37.34.236.15:80 # # ] # # for pro in proxy: # # verify_proxy(pro) # verify_thread_pool()getter.py从数据库抽取一个代理 import requests def get_one_proxy():return requests.get(http://127.0.0.1:5000/all) print(get_one_proxy().text)sever.py搭建本地服务器供调用 import flask # 导入flask模块 from api import RedisClient from flask import request # 获取url地址中查询参数 from flask import jsonify # 可以把对象转换为字符串app flask.Flask(__name__)client RedisClient() app.route(/) # 将下面的函数挂载到路由 def index():视图函数http://demo.spiderpy.cn/get/视图函数返回的数据只能返回字符串类型的数据return h2欢迎来到代理池/h2app.route(/get) def get_proxy():随机获取一个代理,调用数据库random模块one_proxy client.random()return one_proxyapp.route(/getcount) def get_any_proxy():获取指定数量一个代理,调用数据库的 count_for_num()拿到查询参数的值又可能用户没有传递查询参数num返回为空num request.args.get(num, )if not num:没有获取到查询参数num 1else:num int(num)any_proxy client.count_for_num(num)return jsonify(any_proxy)app.route(/getnum) def get_count_proxy():获取所有代理数量调用数据库count方法count_proxy client.count()return f代理可用的数量为:{count_proxy}个app.route(/getall) def get_all_proxy():获取所有代理调用数据库的all()all_proxy client.all()return jsonify(all_proxy)if __name__ __main__:运行实例化的app对象app.run()test_self.py和tests.py对已经储存的代理质量进行检测 记不清哪个效果更好 import timeimport requests from api import RedisClient clients RedisClient() def get_proxy():return requests.get(http://127.0.0.1:5000/getall)a get_proxy() a a.json() # print(a) # for b in a: # print(b) # print(type(a))def getHtml():# retry_count 1for proxy in a:# print(proxy)try:html requests.get(http://www.example.com, proxies{http: http://{}.format(proxy)},timeout4)# print(html.text)if html.status_code in [200, 206, 302]:print(proxy,:可以使用)clients.add(proxy)# 使用代理访问except Exception:print(代理不可用, proxy)clients.decrease(proxy)# 删除代理池中代理# delete_proxy(proxy) while True:getHtml()time.sleep(60*2) 进程池爬取cos猎人.py 主爬虫代码 from typing import List, Any from concurrent.futures import ThreadPoolExecutor import requests import os from lxml import etree import re if not os.path.exists(./img):os.makedirs(img) def get_one_proxy():return requests.get(http://127.0.0.1:5000/get) proxies get_one_proxy().text # proxies def down_img(img_url):for urls in img_url:response requests.get(urlurls, headersheaders)name urls.split(/)[-1]with open(./img/f{name}, wb) as f:f.write(response.content)headers {user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.58,referer: https://www.coshunter.pro/simo }a 252#354 while a 355:url fhttps://www.coshunter.pro/shop/buy/page/{a}res requests.get(url, headersheaders, proxies{http: http://{}.format(proxies)})res.encoding utf-8html re.findall(ra classlink-block href(.*?)/a,res.text)urls html[:-1]# print(urls)for i in urls:res requests.get(i, headersheaders, proxies{http: http://{}.format(proxies)})img_url re.findall(rfigure classwp-block-image.*src(.*?),res.text)print(img_url)with ThreadPoolExecutor(10) as t:t.submit(down_img,img_url)print(a)a 1
http://www.dnsts.com.cn/news/181231.html

相关文章:

  • 网站开发话术买房子怎么找房源
  • 龙岗在线网站制作毕业设计某网站开发的开题报告范文
  • 请问做网站怎么赚钱中资建筑信息平台
  • 农业营销型网站源码网站建设资金投入
  • 网站代理公司wordpress 生命周期
  • 做团购网站多少钱长沙建站公司哪有
  • 山东省建设执业官方网站上海贸易公司有哪些
  • 网站建设的针对对象阿里巴巴官网首页下载
  • 动易网站搜狗推广管家下载
  • 旅游攻略网站开发背景苏州网站开发建设方案
  • 网站域名登记证明文件域名邮箱如何注册
  • 做算法题网站上海大型广告公司排名
  • 池州微信网站建设河南焦作有做网站开发的公司吗
  • wordpress点击量最多的文章爱站网seo培训
  • 提供网站推广公司电话wordpress 安卓 生成
  • 运动鞋子网站建设规划书麻栗坡网站建设
  • 棋牌类网站设计建设帮企商城源码
  • 免费建立一个个人网站广东省建设信息港网站
  • 户县微网站建设电子个人简历手机版免费
  • 公司建设网站的好处网站后台管理界面下载
  • 怎样做网站标题优化网站后台首页设计
  • seo建站营销手游代理
  • 唐山网站建设策划网站建设需要哪些证
  • 潍坊网站建设尚荣微网站建设多少钱
  • c2c代表网站是什么用子域名安装wordpress
  • 中国代理网官方网站兼职做一篇微信的网站
  • 模板建网站多少钱济南高端定制网站建设
  • 网站建设教程 mysqlh5前端开发
  • 阿里云网站商城建设医疗网站模版
  • 网站建设内容策划福州seo推广服务