本文主要代码用于有代理网站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的更多相关文章

  1. Python爬取代理ip

    # -*- coding:utf-8 -*- #author : willowj import urllib import urllib2 from bs4 import BeautifulSoup ...

  2. python爬虫爬取代理IP

    # #author:wuhao # #--*------------*-- #-****#爬取代理IP并保存到Excel----#爬取当日的代理IP并保存到Excel,目标网站xicidaili.co ...

  3. python代理池的构建3——爬取代理ip

    上篇博客地址:python代理池的构建2--代理ip是否可用的处理和检查 一.基础爬虫模块(Base_spider.py) #-*-coding:utf-8-*- ''' 目标: 实现可以指定不同UR ...

  4. python 批量爬取代理ip

    import urllib.request import re import time import random def getResponse(url): req = urllib.request ...

  5. 爬虫爬取代理IP池及代理IP的验证

    最近项目内容需要引入代理IP去爬取内容. 为了项目持续运行,需要不断构造.维护.验证代理IP. 为了绕过服务端对IP 和 频率的限制,为了阻止服务端获取真正的主机IP. 一.服务器如何获取客户端IP ...

  6. 自动爬取代理IP例子

    import time import json import datetime import threading import requests from lxml import etree from ...

  7. 爬取代理IP

    现在爬虫好难做啊,有些网站直接封IP,本人小白一个,还没钱,只能找免费的代理IP,于是去爬了西刺免费代理,结果技术值太低,程序还没调试好, IP又被封了... IP又被封了... IP又被封了... ...

  8. 爬取代理IP,并判断是否可用。

    # -*- coding:utf-8 -*- from gevent import monkey monkey.patch_all() import urllib2 from gevent.pool ...

  9. 原创:Python爬虫实战之爬取代理ip

    编程的快乐只有在运行成功的那一刻才知道QAQ 目标网站:https://www.kuaidaili.com/free/inha/  #若有侵权请联系我 因为上面的代理都是http的所以没写这个判断 代 ...

随机推荐

  1. 如何消除img默认的间距

    方案一:div{font-size:0};方案二:img{ display:block};方案三:img{vertical-align:top;}方案四:div{ margin-bottom:-3px ...

  2. linux下git服务器安装

    git服务器配置http://www.cnblogs.com/dee0912/p/5815267.html git教程https://www.liaoxuefeng.com/wiki/00137395 ...

  3. codeforces 985E Pencils and Boxes

    题意: 把一个数组分成若干组,保证每组的size >= k并且一组中任意两个数字的差的绝对值 <= d,问存不存在这样的分法. 思路: 线性dp. 用dp[i]表示前i个数是否有分法. 设 ...

  4. 《CSS世界》读书笔记(四)--宽度分离

    <!-- <CSS世界>张鑫旭著 --> CSS流体布局下的宽度分离原则 所谓“宽度分离原则”,就是CSS中的width属性不与影响宽度的padding/border(有时候包 ...

  5. Tomcat报错: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/myApp]]

    Tomcat报错:严重: A child container failed during startjava.util.concurrent.ExecutionException: org.apach ...

  6. c#高级编程第七版 学习笔记 第三章 对象和类型

    第三章 对象和类型 本章的内容: 类和结构的区别 类成员 按值和按引用传送参数 方法重载 构造函数和静态构造函数 只读字段 部分类 静态类 Object类,其他类型都从该类派生而来 3.1 类和结构 ...

  7. FractionallySizedBox

    import 'package:flutter/material.dart'; void main() { runApp(MaterialApp(home: new MyApp())); } clas ...

  8. MySQL5.7 Dockerfile

    #Dockerfile for mysql5.7 FROM centos COPY ["src","/src"] RUN groupadd -g 1003 my ...

  9. 【题解】Luogu P2763 试题库问题

    原题传送门 这题很简单啊 从源点向k类题目分别连流量为所需数量的边 从每道题向汇点连一条流量为1的边(每题只能用1次) 从类型向对应的题目连一条流量为1的边 跑一遍最大流 如果最大流小于所需题目数量, ...

  10. tomcat的Server.xml详解和Host的配置

    基于以下说法的领悟: 若只配appBase,不配Context 的docBase(appBase和docBase二选一就可以了),则appBase的每个文件夹里都代表一个应用,每个应用都必须放ROOT ...