Python爬虫——西刺
一直对爬虫这块蛮感兴趣的,所以花了点时间看了看,写了个小脚本
代码可能有点乱,毕竟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爬虫——西刺的更多相关文章
- python爬西刺代理
爬IP代码 import requests import re import dauk from bs4 import BeautifulSoup import time def daili(): p ...
- python scrapy 爬取西刺代理ip(一基础篇)(ubuntu环境下) -赖大大
第一步:环境搭建 1.python2 或 python3 2.用pip安装下载scrapy框架 具体就自行百度了,主要内容不是在这. 第二步:创建scrapy(简单介绍) 1.Creating a p ...
- python+scrapy 爬取西刺代理ip(一)
转自:https://www.cnblogs.com/lyc642983907/p/10739577.html 第一步:环境搭建 1.python2 或 python3 2.用pip安装下载scrap ...
- 手把手教你使用Python爬取西刺代理数据(下篇)
/1 前言/ 前几天小编发布了手把手教你使用Python爬取西次代理数据(上篇),木有赶上车的小伙伴,可以戳进去看看.今天小编带大家进行网页结构的分析以及网页数据的提取,具体步骤如下. /2 首页分析 ...
- Python四线程爬取西刺代理
import requests from bs4 import BeautifulSoup import lxml import telnetlib #验证代理的可用性 import pymysql. ...
- python爬虫成长之路(二):抓取代理IP并多线程验证
上回说到,突破反爬虫限制的方法之一就是多用几个代理IP,但前提是我们得拥有有效的代理IP,下面我们来介绍抓取代理IP并多线程快速验证其有效性的过程. 一.抓取代理IP 提供免费代理IP的网站还挺多的, ...
- Python爬虫代理池
爬虫代理IP池 在公司做分布式深网爬虫,搭建了一套稳定的代理池服务,为上千个爬虫提供有效的代理,保证各个爬虫拿到的都是对应网站有效的代理IP,从而保证爬虫快速稳定的运行,当然在公司做的东西不能开源出来 ...
- python爬虫实战(一)——实时获取代理ip
在爬虫学习的过程中,维护一个自己的代理池是非常重要的. 详情看代码: 1.运行环境 python3.x,需求库:bs4,requests 2.实时抓取西刺-国内高匿代理中前3页的代理ip(可根据需求自 ...
- 爬取西刺ip代理池
好久没更新博客啦~,今天来更新一篇利用爬虫爬取西刺的代理池的小代码 先说下需求,我们都是用python写一段小代码去爬取自己所需要的信息,这是可取的,但是,有一些网站呢,对我们的网络爬虫做了一些限制, ...
随机推荐
- KVO的使用二:常用方法及小技巧
(文章及代码接上一篇) options详解: KVO的注册方法中有一个options枚举,用来确定观察者的接收消息方法接收的信息,那么具体有什么关联呢?下面通过一段代码来验证是如何关联的.依次选择op ...
- 进行分支切换时,出现error的修复方法
进行分支切换时,出现如此错误,导致无法正常切换:error: The following untracked working tree files would be overwritten by ch ...
- 16: vue + crypto-js + python前后端加密解密
1.1 vue中使用crypto-js进行AES加密解密 参考博客:https://www.cnblogs.com/qixidi/p/10137935.html 1.初始化vue项目 vue i ...
- [Python数据挖掘]第6章、电力窃漏电用户自动识别
一.背景与挖掘目标 相关背景自查 二.分析方法与过程 1.EDA(探索性数据分析) 1.分布分析 2.周期性分析 2.数据预处理 1.数据清洗 过滤非居民用电数据,过滤节假日用电数据(节假日用电量明显 ...
- 面试小记---java基础知识
**static 和 final 的理解** static:是静态变量修饰符,修饰的是全局变量,所以对象是共享的,在开始类设计的初期就分配空间. final:声明式属性,方法,类.分别表示属 ...
- 部署springboot项目时 打包成jar时包中html,js,css文件缺失
问题 打包出来的jar包里面没有html,js,css文件 解决方案 在pom.xml文件下的build选项中的src/main/resources的目录下 添加配置 <build> &l ...
- 【BUAA-OO】第二单元作业总结
第二单元作业总结 ——电梯恐惧症患者的极限自救 一. 第一次作业程序分析 1. 设计策略简略分析 线程:主线程.输入线程和电梯线程,另有一个持有请求队列的调度器,一个对输入进行处理的Req ...
- Lintcode177-Convert Sorted Array to Binary Search Tree With Minimal Height-Easy
177. Convert Sorted Array to Binary Search Tree With Minimal Height Given a sorted (increasing order ...
- css中绝对定位和相对定位的区别
先说个技巧一般用:子绝父相,即相对定位是给父级的,绝对定位的时候是给子级的. 一:绝对定位 position: absolute;绝对定位:绝对定位是相对于元素最近的已定位的祖先元素(即是设置了绝对定 ...
- php接口签名验证
在做一些api接口设计时候会遇到设置权限问题,比如我这个接口只有指定的用户才能访问. 很多时候api接口是属于无状态的,没办法获取session,就不能够用登录的机制去验证,那么 大概的思路是在请求包 ...