使用Python爬取代理ip
本文主要代码用于有代理网站http://www.kuaidaili.com/free/intr中的代理ip爬取,爬虫使用过程中需要输入含有代理ip的网页链接。
测试ip是否可以用
import telnetlib
import requests
from bs4 import BeautifulSoup, element
import json
def filter_ip(ip_info):
'''
判断给定代理ip是否可用
:param ip_info:
:return:
'''
ip, port = ip_info.split(':')
try:
telnetlib.Telnet(ip, port=int(port), timeout=5)
except:
return False
else:
return True
获取指定页面的代理ip地址
def get_ip(url):
'''
爬取url中的全部代理ip
:param url: 存在代理ip的网页
:return:
'''
headers = {
'Host': 'www.kuaidaili.com',
'User-Agent': 'Mozilla/5.0 (iPad; CPU OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4',
'Accept-Encoding': 'gzip, deflate',
'Referer': 'http://www.youdaili.net/',
'Cookie': 'yd_cookie=f79e58ee-56a0-420270b11723b478602ef5c39e38dfb62a0f; _ydclearance=7c74cfd9ee4bc1537da1e0c6-b5de-458f-bc6c-6c973e273296-1505809848; channelid=0; sid=1505801661396785; _ga=GA1.2.1178656966.1505802632; _gid=GA1.2.1266088947.1505802632; Hm_lvt_7ed65b1cc4b810e9fd37959c9bb51b31=1505802632; Hm_lpvt_7ed65b1cc4b810e9fd37959c9bb51b31=1505802650',
'Connection': 'keep-alive',
}
wb_data = requests.get(url, headers=headers)
soup = BeautifulSoup(wb_data.text, 'html5lib')
ip_text = soup.select('#list > table > tbody > tr > td:nth-of-type(1)')
port_text = soup.select('#list > table > tbody > tr > td:nth-of-type(2)')
ip = [e.text for e in ip_text if len(e.text) >6]
port = [e.text for e in port_text if len(e.text) > 0]
ip_port =['{0}:{1}'.format(a, b) for a, b in zip(ip, port)]
ip_good = [e for e in ip_port if filter_ip(e)]
return ip_good
调用爬虫
if __name__ == '__main__':
# 包含ip的网页链接
urls = ['http://www.kuaidaili.com/free/intr/{0}/'.format(i) for i in range(1, 21)]
ip_good = list()
for url in urls:
tmp = get_ip(url)
ip_good.extend(tmp)
print url
print ip_good
with open('./ip.txt', 'w') as f:
f.write(json.dumps(ip_good))
f.close()
使用Python爬取代理ip的更多相关文章
- Python爬取代理ip
# -*- coding:utf-8 -*- #author : willowj import urllib import urllib2 from bs4 import BeautifulSoup ...
- python爬虫爬取代理IP
# #author:wuhao # #--*------------*-- #-****#爬取代理IP并保存到Excel----#爬取当日的代理IP并保存到Excel,目标网站xicidaili.co ...
- python代理池的构建3——爬取代理ip
上篇博客地址:python代理池的构建2--代理ip是否可用的处理和检查 一.基础爬虫模块(Base_spider.py) #-*-coding:utf-8-*- ''' 目标: 实现可以指定不同UR ...
- python 批量爬取代理ip
import urllib.request import re import time import random def getResponse(url): req = urllib.request ...
- 爬虫爬取代理IP池及代理IP的验证
最近项目内容需要引入代理IP去爬取内容. 为了项目持续运行,需要不断构造.维护.验证代理IP. 为了绕过服务端对IP 和 频率的限制,为了阻止服务端获取真正的主机IP. 一.服务器如何获取客户端IP ...
- 自动爬取代理IP例子
import time import json import datetime import threading import requests from lxml import etree from ...
- 爬取代理IP
现在爬虫好难做啊,有些网站直接封IP,本人小白一个,还没钱,只能找免费的代理IP,于是去爬了西刺免费代理,结果技术值太低,程序还没调试好, IP又被封了... IP又被封了... IP又被封了... ...
- 爬取代理IP,并判断是否可用。
# -*- coding:utf-8 -*- from gevent import monkey monkey.patch_all() import urllib2 from gevent.pool ...
- 原创:Python爬虫实战之爬取代理ip
编程的快乐只有在运行成功的那一刻才知道QAQ 目标网站:https://www.kuaidaili.com/free/inha/ #若有侵权请联系我 因为上面的代理都是http的所以没写这个判断 代 ...
随机推荐
- 关于php
public private protected 修饰词 public: 公有类型 在子类中可以通过self::var调用public方法或属性,parent::method调用父类方法 在实例中可以 ...
- proto 2 语法
一.proto文件 PB的定义是通过proto文件进行定义的,一个标准的类型如下: message SearchRequest { required string query = 1; optiona ...
- sitecore 数字化营销-path funnel
路径分析器是一个应用程序,允许您查看联系人在浏览网站时所采用的各种路径.您可以查看联系人在转换目标并与广告系列互动时所采用的路径,让您深入了解哪些路径为每次转化提供最佳参与价值,以及哪些路径效率较低且 ...
- C# 调用C++的dll 那些事
之前从来没搞过C++,最近被安排的任务需要调用C++的接口,对于一个没用过 Dependency 的小白来说,原本以为像平时的Http接口那样,协议,端口一定义,方法参数一写就没事,结果踩了无数的坑. ...
- mysql order by 多个字段排序
工作中需用到order by 后两个字段排序,但结果却产生了一个Bug,以此备录. [1]复现问题场景 为了说明问题,模拟示例数据库表students,效果同实例. 如下语句Sql_1: SELECT ...
- Windwos Live Writer插件指南
Windows Live Writer 即(WLW) 是一个免费的桌面应用程序,可以用于发布博客. 官网下载地址:https://www.microsoft.com/zh-CN/download/de ...
- 常用python的标准库
1.itsdangerous # 加密签名的数据 2.re # 正则表达式 3.time # 时间模块 4.keyword # 查看关键字5.random # 随机6.uuid
- P2472 [SCOI2007]蜥蜴(网络流)
P2472 [SCOI2007]蜥蜴 把每个点拆成2个点,两点之间连边的边权为石柱高度 新建虚拟源点$S$和汇点$T$ $S$向所有有蜥蜴的点连边,边权1 其他边都连$inf$ 剩下就是裸的$dini ...
- Docker Swarm 介绍 or 工作原理
Docker Swarm 介绍 Swarm 简介 Swarm是Docker公司自研发的容器集群管理系统,Swarm在早期是作为一个独立服务存在,在Docker Engine v1.12中集成了Swar ...
- 前后端分离不可缺少的神器 NGINX
样例讲解 1:安装工具包 wget.vim和gcc yum install -y wget yum install -y vim-enhanced yum install -y make cmake ...