采集程序
熟悉xpath和bs4的用法

coding:utf-8
import time
import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent #这是一个随机返回一个UA头的模块
from lxml import etree

ua = UserAgent()
headers = {
#‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36’
‘User-Agent’:ua.random
}
for i in range(1,2):
time.sleep(1)
#print(‘第’ + str(i) + ‘页’)
url = ‘https://www.xicidaili.com/nn/’ + str(i)
response = requests.get(url=url, headers=headers)
‘’’
res = etree.HTML(response.text)
trs = res.xpath(’//div[@class=“clearfix proxies”]/table[@id=“ip_list”]’)
for tr in trs:
ips = tr.xpath(’./tr/td[2]/text()’) # 一个ip列表
ports = tr.xpath(’./tr/td[3]/text()’)
anonymous = tr.xpath(’./tr/td[5]/text()’)
types= tr.xpath(’./tr/td[6]/text()’)
for ip,port,anonymou,type in zip(ips,ports,anonymous,types):
with open(‘ip.csv’, ‘a+’, encoding=‘utf-8-sig’) as f:
f.write(ip + ‘,’ + port + ‘,’ + anonymou + ‘,’ + type + ‘\n’)
‘’’
soup = BeautifulSoup(response.text, ‘html.parser’)
all_trs = soup.find_all(‘tr’)
for tr in all_trs[1:]:
all_tds = tr.find_all(‘td’)
ip = all_tds[1].get_text() #是一个字符串
print(ip)
port = all_tds[2].get_text()
anonymous = all_tds[4].get_text()
type = all_tds[5].get_text()
for j in all_tds[6].find_all(“div”, attrs={“class”: “bar”}):
speed = j.get(‘title’)
with open(‘ip.csv’, ‘a+’, encoding=‘utf-8-sig’) as f:
f.write(ip + ‘,’ + port + ‘,’ + anonymous + ‘,’ + type + ‘,’ + speed + ‘\n’)

测试程序
用采集到的ip,访问百度网站,注意时间间隔,若访问成功,再保存可用的ip

import pandas as pd
import numpy as np
import requests
import time
import random

df = pd.read_csv(‘ip.csv’, header=None, names=[“ip”, “port”, “anonymous”, “proxy_type”, “speed”])
proxy_types = ["{}".format(i) for i in np.array(df[‘proxy_type’])]
ips = ["{}".format(i) for i in np.array(df[‘ip’])]
ports = ["{}".format(i) for i in np.array(df[‘port’])]
proxy_url = [’{0}?/{1}:{2}’.format(proxy_types[i], ips[i], ports[i]) for i in range(len(ips))]
proxy_type = [’{}’.format(i) for i in proxy_types]
for i in range(898):
time.sleep(random.randint(0,5))
proxies = {
proxy_type[i]: proxy_url[i]
}
try:
response = requests.get(‘https://www.baidu.com’, proxies=proxies)
except Exception as e:
print(‘invalid ip and port’)
else:
code = response.status_code
if code == 200:
print(‘ip可以用{}’.format(proxies))
with open(‘effective_ip.csv’, ‘a+’, encoding=‘utf-8-sig’) as f:
f.write(proxy_type[i] + ‘,’ + proxy_url[i] + ‘\n’)
else:
print(‘ip不可用{}’.format(proxies))

西刺ip代理采集和ip测试-国内免费高匿版本相关推荐

  1. 爬取西刺网代理ip,并把其存放mysql数据库

    需求: 获取西刺网代理ip信息,包括ip地址.端口号.ip类型 西刺网:http://www.xicidaili.com/nn/ 那,如何解决这个问题? 分析页面结构和url设计得知: 数据都在本页面 ...

  2. Scrapy学习-13-使用DownloaderMiddleware设置IP代理池及IP变换

    设置IP代理池及IP变换方案 方案一: 使用国内免费的IP代理 1 http://www.xicidaili.com # 创建一个tools文件夹,新建一个py文件,用于获取代理IP和PORT fro ...

  3. 静态ip代理软件可以通过哪些渠道免费获取

    代理ip是信息抓取必备的工具,其不仅可以防止 ip被封,还能够增加信息抓取的数量,提高工作效率.因此很多人为了提高信息抓取效率,都会选择扒取海外数据.那么,国外静态代理ip软件可以通过哪些渠道免费获取 ...

  4. golang-proxy 具有性能评估功能的高性能免费高匿代理抓取

    Golang-Proxy 项目地址: https://github.com/storyicon/golang-proxy Golang-Proxy – 简单高效的免费代理抓取工具通过抓取网络上公开的免 ...

  5. Python 爬取西刺可用代理IP,自带检测。

    功能: 爬取西刺代理IP 添加了自动检测IP是否可用功能 输出到Data.txt文件中 注意: 爬取西刺的时候,有可能真实IP被封,可以先尝试爬取少量的代理IP,放入ip_use中. 测试: 1.测试 ...

  6. 爬取西刺网代理IP并检验保存

    准备把以前写过的小爬虫慢慢贴出来,抱歉还没怎么去改~ 最后可用的IP保存在运行目录下的ip_ues.txt中. #encoding:utf8 #author : buracag_mc import u ...

  7. 36-Scrapy框架-西刺网代理爬取+存储到MySQL

    目的: 爬取西刺网https://www.xicidaili.com/nn下3799页的代理相关信息 将爬取的信息存储到mysql数据库 采用基于spider类的Scrapy框架爬虫,所以在构建爬取页 ...

  8. requests使用ip代理时单ip和多ip设置方式,智联招聘小爬虫封装

    reqeusts库,在使用ip代理时,单ip代理和多ip代理的写法不同 (目前测试通过,如有错误,请评论指正) 单ip代理模式 省去headers等 import requests proxy = { ...

  9. HttpClient使用Ip代理访问目标IP

    一.HttpClient使用代理IP 1.1.前言 在爬取网页的时候,有的目标站点有反爬虫机制,对于频繁访问站点以及规则性访问站点的行为,会采集屏蔽IP措施. 这时候,代理IP就派上用场了.可以使用代 ...

最新文章

  1. android binder
  2. 浅谈配置文件:spring-servlet.xml(spring-mvc.xml) 与 applicationContext.xml
  3. Keil 运行.bat脚本文件
  4. Ogitor的编译配置全过程
  5. 批量设置Service Order成transferred状态
  6. 数字心电图仪综合系统设计与实现verilog
  7. 你真的清楚DateTime in C#吗?
  8. [css] 使用sass的方式有哪些?
  9. 云开发0基础训练营第二期热力来袭!
  10. oracle近似查找,距离内的Oracle空间搜索
  11. mysql+两天前+函数_Mysql 日期函数
  12. 面向智能化软件开发的开源生态大数据
  13. netstat mysql_mysql-netstat
  14. datatables data bind json
  15. CCF NOI1000 加密算法
  16. 【CometOJ】CometOJ#8 解题报告
  17. 超平面是什么?——理解超平面(SVM开篇之超平面详解)
  18. 建网站购买服务器,建网站购买服务器
  19. QTP版“古城钟楼”---使用QTP完成微博定时发送脚本代码
  20. 使用CDN后网页无法访问怎么解决

热门文章

  1. 解决报错“RuntimeError - [Xcodeproj] Unknown object version.”
  2. Flash activex控件版本信息
  3. Java兔子生兔子问题
  4. 财务数据填报怎样做?用这个报表工具轻松搞定!_光点科技
  5. 拼购造富,苏宁引领“电商扶贫”
  6. Linux|看门狗的简单使用
  7. Metaverse 元宇宙入门-02-Hardware 硬件与元宇宙
  8. 移动互联网精彩语录:悟透一句话,改变你一生!
  9. foxmai邮件服务器pop,全球邮企业邮箱Foxmail POP3/IMAP协议设置方法
  10. ( “树” 之 BST) 109. 有序链表转换二叉搜索树 ——【Leetcode每日一题】