python多线程爬取西刺代理的示例代码


Posted in Python onJanuary 30, 2021

西刺代理是一个国内IP代理,由于代理倒闭了,所以我就把原来的代码放出来供大家学习吧。

镜像地址:https://www.blib.cn/url/xcdl.html

首先找到所有的tr标签,与class="odd"的标签,然后提取出来。

python多线程爬取西刺代理的示例代码

然后再依次找到tr标签里面的所有td标签,然后只提取出里面的[1,2,5,9]这四个标签的位置,其他的不提取。

python多线程爬取西刺代理的示例代码

最后可以写出提取单一页面的代码,提取后将其保存到文件中。

import sys,re,threading
import requests,lxml
from queue import Queue
import argparse
from bs4 import BeautifulSoup

head = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36"}

if __name__ == "__main__":
  ip_list=[]
  fp = open("SpiderAddr.json","a+",encoding="utf-8")
  url = "https://www.blib.cn/url/xcdl.html"
  request = requests.get(url=url,headers=head)
  soup = BeautifulSoup(request.content,"lxml")
  data = soup.find_all(name="tr",attrs={"class": re.compile("|[^odd]")})
  for item in data:
    soup_proxy = BeautifulSoup(str(item),"lxml")
    proxy_list = soup_proxy.find_all(name="td")
    for i in [1,2,5,9]:
      ip_list.append(proxy_list[i].string)
    print("[+] 爬行列表: {} 已转存".format(ip_list))
    fp.write(str(ip_list) + '\n')
    ip_list.clear()

爬取后会将文件保存为 SpiderAddr.json 格式。

python多线程爬取西刺代理的示例代码

最后再使用另一段代码,将其转换为一个SSR代理工具直接能识别的格式,{'http': 'http://119.101.112.31:9999'}

import sys,re,threading
import requests,lxml
from queue import Queue
import argparse
from bs4 import BeautifulSoup

if __name__ == "__main__":
  result = []
  fp = open("SpiderAddr.json","r")
  data = fp.readlines()

  for item in data:
    dic = {}
    read_line = eval(item.replace("\n",""))
    Protocol = read_line[2].lower()
    if Protocol == "http":
      dic[Protocol] = "http://" + read_line[0] + ":" + read_line[1]
    else:
      dic[Protocol] = "https://" + read_line[0] + ":" + read_line[1]
    result.append(dic)
    print(result)

python多线程爬取西刺代理的示例代码

完整多线程版代码如下所示。

import sys,re,threading
import requests,lxml
from queue import Queue
import argparse
from bs4 import BeautifulSoup

head = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36"}

class AgentSpider(threading.Thread):
  def __init__(self,queue):
    threading.Thread.__init__(self)
    self._queue = queue

  def run(self):
    ip_list=[]
    fp = open("SpiderAddr.json","a+",encoding="utf-8")
    while not self._queue.empty():
      url = self._queue.get()
      try:
        request = requests.get(url=url,headers=head)
        soup = BeautifulSoup(request.content,"lxml")
        data = soup.find_all(name="tr",attrs={"class": re.compile("|[^odd]")})
        for item in data:
          soup_proxy = BeautifulSoup(str(item),"lxml")
          proxy_list = soup_proxy.find_all(name="td")
          for i in [1,2,5,9]:
            ip_list.append(proxy_list[i].string)
          print("[+] 爬行列表: {} 已转存".format(ip_list))
          fp.write(str(ip_list) + '\n')
          ip_list.clear()
      except Exception:
        pass

def StartThread(count):
  queue = Queue()
  threads = []
  for item in range(1,int(count)+1):
    url = "https://www.xicidaili.com/nn/{}".format(item)
    queue.put(url)
    print("[+] 生成爬行链接 {}".format(url))

  for item in range(count):
    threads.append(AgentSpider(queue))
  for t in threads:
    t.start()
  for t in threads:
    t.join()

# 转换函数
def ConversionAgentIP(FileName):
  result = []
  fp = open(FileName,"r")
  data = fp.readlines()

  for item in data:
    dic = {}
    read_line = eval(item.replace("\n",""))
    Protocol = read_line[2].lower()
    if Protocol == "http":
      dic[Protocol] = "http://" + read_line[0] + ":" + read_line[1]
    else:
      dic[Protocol] = "https://" + read_line[0] + ":" + read_line[1]
    result.append(dic)
  return result

if __name__ == "__main__":
  parser = argparse.ArgumentParser()
  parser.add_argument("-p","--page",dest="page",help="指定爬行多少页")
  parser.add_argument("-f","--file",dest="file",help="将爬取到的结果转化为代理格式 SpiderAddr.json")
  args = parser.parse_args()
  if args.page:
    StartThread(int(args.page))
  elif args.file:
    dic = ConversionAgentIP(args.file)
    for item in dic:
      print(item)
  else:
    parser.print_help()

以上就是python多线程爬取西刺代理的示例代码的详细内容,更多关于python多线程爬取代理的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python自动化测试实例解析
Sep 28 Python
Python简单进程锁代码实例
Apr 27 Python
Python矩阵常见运算操作实例总结
Sep 29 Python
PyQt5每天必学之带有标签的复选框
Apr 19 Python
Tensorflow中的placeholder和feed_dict的使用
Jul 09 Python
Django rest framework工具包简单用法示例
Jul 20 Python
django DRF图片路径问题的解决方法
Sep 10 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
深入了解Python在HDA中的应用
Sep 05 Python
python 字典的打印实现
Sep 26 Python
python调用有道智云API实现文件批量翻译
Oct 10 Python
Django解决frame拒绝问题的方法
Dec 18 Python
Python如何实现Paramiko的二次封装
Jan 30 #Python
python实现按日期归档文件
Jan 30 #Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
Jan 30 #Python
如何用Django处理gzip数据流
Jan 29 #Python
Spy++的使用方法及下载教程
Jan 29 #Python
Python实现随机爬山算法
Jan 29 #Python
用pushplus+python监控亚马逊到货动态推送微信
Jan 29 #Python
You might like
使用PHP批量生成随机用户名
2008/07/10 PHP
在Yii框架中使用PHP模板引擎Twig的例子
2014/06/13 PHP
采用ThinkPHP中F方法实现快速缓存实例
2014/06/13 PHP
PHP+MySQL实现模糊查询员工信息功能示例
2018/06/01 PHP
PHP 自动加载类原理与用法实例分析
2020/04/14 PHP
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
使用jquery实现图文切换效果另加特效
2013/01/20 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
javascript中错误使用var造成undefined
2016/03/31 Javascript
javascript事件冒泡简单示例
2016/06/20 Javascript
Bootstrap3 模态框使用实例
2017/02/22 Javascript
使用JavaScript实现贪吃蛇游戏
2020/09/29 Javascript
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
Python中apply函数的用法实例教程
2014/07/31 Python
Python 基础教程之str和repr的详解
2017/08/20 Python
Python实现字符串的逆序 C++字符串逆序算法
2020/05/28 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
解决python中无法自动补全代码的问题
2018/12/04 Python
Python将文字转成语音并读出来的实例详解
2019/07/15 Python
用Python写一个自动木马程序
2019/09/17 Python
如何关掉pycharm中的python console(图解)
2019/10/31 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
2020/03/05 Python
python实现简单遗传算法
2020/09/18 Python
前端面试必备之CSS3的新特性
2017/09/05 HTML / CSS
匈牙利超级网上商店和优惠:Alza.hu
2019/12/17 全球购物
飞利浦美国官网:Philips美国
2020/02/28 全球购物
计算机专业自我鉴定
2013/10/15 职场文书
农业局学习党的群众路线教育实践活动心得体会
2014/03/07 职场文书
优秀学生干部个人事迹材料
2014/06/02 职场文书
师范生求职信
2014/06/14 职场文书
技术入股合作协议书
2014/10/07 职场文书
入股协议书范本
2014/11/01 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫