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写一段小代码去爬取自己所需要的信息,这是可取的,但是,有一些网站呢,对我们的网络爬虫做了一些限制, ...
随机推荐
- 《Java程序设计》课程实验要求
目录 <Java程序设计>课程实验要求 注册实验楼账号 实验一 Java开发环境的熟悉 实验二<Java面向对象程序设计> 实验三 <敏捷开发与XP实践> 实验四 ...
- iou与giou对比
设矩形1大小为100x100,矩形2从左上角顶点重合开始,向右滑动250个单位. c++源码(基于opencv3.4.0) float iou(const cv::Rect& r1, cons ...
- 获取占用fd最大的前20个进程
for x in `ps -eF| awk '{ print $2 }'`;do echo `ls /proc/$x/fd 2> /dev/null | wc -l` $x `cat /proc ...
- 使用 pm2 优雅的部署 node 程序
使用 pm2 优雅的部署 node 程序 # 启动并监控名字为 XXX 的 npm run start:dev 命令 pm2 start npm --watch --name XXX -- run s ...
- CAP原则和BASE定理
CAP原则和BASE定理 分布式系统 来自个人OneNote 以CAP理论为基础的三种解决方案 1.两阶段提交 所谓的两个阶段是指:第一阶段:准备阶段(投票阶段)和第二阶段:提交阶段(执行阶段). 准 ...
- h5 ios键盘卡死页面
失去焦点以后重新设置页面顶部位置 $('input,textarea').on('blur',function(){ window.scroll(0,0); }); $('select').on('c ...
- spring data jpa、Hibernate开启全球唯一UUID设置
spring data jpa.Hibernate开启全球唯一UUID设置 原文链接:https://www.cnblogs.com/blog5277/p/10662079.html 原文作者:博客园 ...
- Python简单实现决策树
__author__ = '糖衣豆豆' #决策树 import pandas as pda fname="~/coding/python/data/lesson.csv" data ...
- vue--简化项目逻辑属性
computed属性对数据变化是实时响应的 因此当项目中某个数值发生变化,并且要在别的地方引用这个数值时,computed即可派上用场 来看一个例子: html部分: <div id=" ...
- 整合SSH框架实现简单登录
SSH整合的大体结构:我们将Struts2和hibernate交给spring来管理 创建好web项目之后,首先当然是先引入需要的pom节点,需要的pom的节点可以在Maven官方仓库中下载https ...