一直对爬虫这块蛮感兴趣的,所以花了点时间看了看,写了个小脚本

代码可能有点乱,毕竟Python小白,勿喷……

嗯,话不多说,放码出来

 # -*- coding: UTF-8 -*-
import re
import requests headers = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"} url = "http://www.xicidaili.com/nn/" context = requests.get(url,headers = headers) #ip和端口
# pattern = re.compile("<td>\d+\.\d+\.\d+\.\d+</td>\s+<td>\d+</td>")
pattern = re.compile("<td>\d+\.\d+\.\d+\.\d+</td>\s+<td>\d+</td>\s+<td>\s+<.*?</a>\s+</td>\s+<.*?</td>\s+<td>[A-Z]{2,6}</td>") # re.sub字串替换
pat = re.compile('::<.*?::<.*?:') #例:123.135.62.217:8118::<ahref="/2018-01-24/shandong">山东泰安</a>::<tdclass="country">高匿:HTTPS
#匹配规则:?::<.*?: content = pattern.findall(context.text)
for item in content:
item = item.replace("<td>","").replace("</td>","").replace("\n",":").replace(" ","")
item = pat.sub("__",item)
with open("ip.txt","a") as f:
f.write(item+"\n") #ip数
i = 0
#页面数
j = 1 #pass ip使用次数
#防止过多使用同一个ip被封,虽用的代理ip,还是感觉不太好,勿喷
#当然,ip和页面一对一又显得浪费
#所以加了这个机制
x = 0
f = open("ip.txt")
lines = f.readlines() #数组的长度,Python应该是字典
# print len(lines) while i<len(lines):
url = "http://www.xicidaili.com/nn/"+str(j) #ip类型判断
if re.findall("HTTPS",lines[i].replace("\n","")):
ip = "https://"+lines[i].replace("\n","").replace("__HTTPS","")
proxies = {
"https":ip
}
elif re.findall("HTTP",lines[i].replace("\n","")):
ip = "http://"+lines[i].replace("\n","").replace("__HTTP","")
proxies = {
"http":ip
}
else:
print "代理ip获取错误..."
exit() #判断ip是否可用
try:
response = requests.get(url,headers = headers,proxies = proxies)
except:
print "第"+str(i)+"次失败"
i = i+1
else:
context = pattern.findall(response.text)
#可用ip保存,存到ip_pass.txt
if x>8:
with open("ip_pass.txt","a") as f:
f.write(lines[i])
i = i+1
x = 1
print "第"+str(i)+"次成功"
print "."
print "."
print "."
else:
x = x+1
#保存页面信息
for item in context:
item = item.replace("<td>","").replace("</td>","").replace("\n",":").replace(" ","")
item = pat.sub("__",item)
with open("ips.txt","a") as f:
f.write(item+"\n")
print "第"+str(j)+"页爬取成功"
j = j+1
print "success"

Python爬虫——西刺的更多相关文章

  1. python爬西刺代理

    爬IP代码 import requests import re import dauk from bs4 import BeautifulSoup import time def daili(): p ...

  2. python scrapy 爬取西刺代理ip(一基础篇)(ubuntu环境下) -赖大大

    第一步:环境搭建 1.python2 或 python3 2.用pip安装下载scrapy框架 具体就自行百度了,主要内容不是在这. 第二步:创建scrapy(简单介绍) 1.Creating a p ...

  3. python+scrapy 爬取西刺代理ip(一)

    转自:https://www.cnblogs.com/lyc642983907/p/10739577.html 第一步:环境搭建 1.python2 或 python3 2.用pip安装下载scrap ...

  4. 手把手教你使用Python爬取西刺代理数据(下篇)

    /1 前言/ 前几天小编发布了手把手教你使用Python爬取西次代理数据(上篇),木有赶上车的小伙伴,可以戳进去看看.今天小编带大家进行网页结构的分析以及网页数据的提取,具体步骤如下. /2 首页分析 ...

  5. Python四线程爬取西刺代理

    import requests from bs4 import BeautifulSoup import lxml import telnetlib #验证代理的可用性 import pymysql. ...

  6. python爬虫成长之路(二):抓取代理IP并多线程验证

    上回说到,突破反爬虫限制的方法之一就是多用几个代理IP,但前提是我们得拥有有效的代理IP,下面我们来介绍抓取代理IP并多线程快速验证其有效性的过程. 一.抓取代理IP 提供免费代理IP的网站还挺多的, ...

  7. Python爬虫代理池

    爬虫代理IP池 在公司做分布式深网爬虫,搭建了一套稳定的代理池服务,为上千个爬虫提供有效的代理,保证各个爬虫拿到的都是对应网站有效的代理IP,从而保证爬虫快速稳定的运行,当然在公司做的东西不能开源出来 ...

  8. python爬虫实战(一)——实时获取代理ip

    在爬虫学习的过程中,维护一个自己的代理池是非常重要的. 详情看代码: 1.运行环境 python3.x,需求库:bs4,requests 2.实时抓取西刺-国内高匿代理中前3页的代理ip(可根据需求自 ...

  9. 爬取西刺ip代理池

    好久没更新博客啦~,今天来更新一篇利用爬虫爬取西刺的代理池的小代码 先说下需求,我们都是用python写一段小代码去爬取自己所需要的信息,这是可取的,但是,有一些网站呢,对我们的网络爬虫做了一些限制, ...

随机推荐

  1. 4、网上收集Storm 讲解图

    1.Storm与Kafka集成 我们知道storm的作用主要是进行流式计算,对于源源不断的均匀数据流流入处理是非常有效的, 而现实生活中大部分场景并不是均匀的数据流,而是时而多时而少的数据流入,这种情 ...

  2. SpringBoot服务器部署

    注释本地tomcat jar包 jdk版本必须1.8以上 tomcat版本必须8以上 配置tomcat server.xml文件 Swagger 配置

  3. mysql基操

    创建数据表: create table tt1( id int, name varchar(20), age int,sex boolean ); insert into tt1 values(1,& ...

  4. 比原链(Bytom)先知节点 Ubuntu接入文档

    系统要求 我们建议选择知名的VPS服务商,运行比原链节点对算力没有要求,但是请配置尽可能大的磁盘空间. 节点服务器最小配置: 操作系统: Windows/Linux/Docker CPU: 2核 内存 ...

  5. 微信支付之App支付

    项目接入微信支付的准备工作: 注册成为开发者,进行资质认证,这里是需要300元的审核费用的: 在微信商户平台创建应用,提交等待审核(大致需要5-7个工作日): 应用审核通过之后,进入应用,开通微信支付 ...

  6. springboot2.0 JPA配置自定义repository,并作为基类BaseRepository使用

    springboot2.0 JPA配置自定义repository,并作为基类BaseRepository使用 原文链接:https://www.cnblogs.com/blog5277/p/10661 ...

  7. git commit -m 提交的内容换行

    网上说只需要通过单引号来换行,一直没理解,后面终于试出来了.总结一句话就是. . 先输入第一个引号,按Enter即可换行,完成后再补齐后面的引号 // 步骤一: 输入第一行 git commit -m ...

  8. 3 - Two Pointers Algorithm

    5. Kth Largest Element (quick sort的变种) https://www.lintcode.com/problem/kth-largest-element/descript ...

  9. python-Excel读取-合并单元格读取

    python-Excel读取-合并单元格读取(后续会补充python-Excel写入的部分) 1. python读取Excel单元格 代码包含读取Excel中数据,以及出现横向合并单元格,以及竖向合并 ...

  10. xadmin邮箱验证码 标题 EmailVerifyRecord object

    [修改users-models模块] 1.如果这样不生效 def __unicode__(self): return '{0}({1})'.format(self.code, self.email) ...