数据库表sql语句:

CREATE TABLE `free_ip` (`free_ip_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`ip` varchar(255) DEFAULT NULL COMMENT 'ip地址',`port` varchar(255) DEFAULT NULL COMMENT '端口',`yini_class` varchar(255) DEFAULT NULL COMMENT '匿名等级',`http_type` varchar(255) DEFAULT NULL COMMENT '代理类型',`response_time` varchar(255) DEFAULT NULL COMMENT '响应时间',`address` varchar(255) DEFAULT NULL COMMENT '地理位置',`validate_time` varchar(255) DEFAULT NULL COMMENT '最近验证时间',`hashcode` varchar(255) DEFAULT NULL COMMENT '去重',PRIMARY KEY (`free_ip_id`),UNIQUE KEY `hashcode` (`hashcode`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4220 DEFAULT CHARSET=utf8;

源代码:

# coding:utf-8
import random, re
import sqlite3
import json, time
import uuid
from bs4 import BeautifulSoup
import threading
import requests
import MySQLdb
from lxml import etreeimport urllib3
urllib3.disable_warnings()
import urllib2import sys
reload(sys)
sys.setdefaultencoding('utf-8')session = requests.session()import logging
import logging.handlers
import platform
sysStr = platform.system()
if sysStr =="Windows":LOG_FILE_check = 'H:\\log\\log.txt'
else:LOG_FILE_check = '/log/wlb/crawler/cic.log'handler = logging.handlers.RotatingFileHandler(LOG_FILE_check, maxBytes=128 * 1024 * 1024,backupCount=10)  # 实例化handler  200M 最多十个文件
fmt = '\n' + '%(asctime)s - %(filename)s:%(lineno)s  - %(message)s'
formatter = logging.Formatter(fmt)  # 实例化formatter
handler.setFormatter(formatter)  # 为handler添加formatter
logger = logging.getLogger('check')  # 获取名为tst的logger
logger.addHandler(handler)  # 为logger添加handler
logger.setLevel(logging.DEBUG)def md5(str):import hashlibm = hashlib.md5()m.update(str)return m.hexdigest()def freeIp():for i in range(1,1000):print "正在爬取的位置是:",iurl = "http://www.ip181.com/daili/" + str(i)+ ".html"headers = {"Host":"www.ip181.com","Connection":"keep-alive","Upgrade-Insecure-Requests":"1","User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.91 Safari/537.36","Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8","Referer":url,"Accept-Encoding":"gzip, deflate","Accept-Language":"zh-CN,zh;q=0.8",}try:result = session.get(url=url,headers=headers).textresult = result.encode('ISO-8859-1').decode(requests.utils.get_encodings_from_content(result)[0])except:result = session.get(url=url, headers=headers).textresult = result.encode('ISO-8859-1').decode(requests.utils.get_encodings_from_content(result)[0])soup = BeautifulSoup(result, 'html.parser')result_soup = soup.find_all("div", attrs={"class": "col-md-12"})[1]result_soup = str(result_soup).replace('\r\n\t','').replace('\r\n','').replace('\n\t','').replace('\n','').replace(' class="warning"','')result_soups = re.findall('最近验证时间</td></tr>(.*?)</tbody></table><div class="page">共',result_soup)[0]print result_soupsresult_list = re.findall('<tr><td>(.*?)</td><td>(.*?)</td><td>(.*?)</td><td>(.*?)</td><td>(.*?)</td><td>(.*?)</td><td>(.*?)</td></tr>',result_soups)for item in result_list:ip = item[0]port = item[1]yini_class = item[2]http_type = item[3]response_time = item[4]address = item[5]validate_time = item[6]proxy = str(ip) + ":" + porthashcode = md5(proxy)try: # 此处是数据库连接,请换成自己的数据库conn = MySQLdb.connect(host="110.110.110.717", user="lg", passwd="456", db="369",charset="utf8")cursor = conn.cursor()sql = """INSERT INTO free_ip (ip,port,yini_class,http_type,response_time,address,validate_time,hashcode) VALUES (%s,%s,%s,%s,%s,%s,%s,%s)"""params = (ip,port,yini_class,http_type,response_time,address,validate_time,hashcode)cursor.execute(sql, params)conn.commit()cursor.close()print "          插入成功      "except Exception as e:print "********插入失败********"print efreeIp()

爬取效果:

转载于:https://www.cnblogs.com/xuchunlin/p/6774414.html

Python 爬虫实例(6)—— 爬取蚂蚁免费代理相关推荐

  1. Python爬虫实例: 爬取“最好大学网”大学排名

    实例2 爬取大学排名 上海交通大学设计了一个"最好大学网",上面列出了当前的大学排名.我们要设计爬虫程序,爬取大学排名信息. 爬虫功能要求: 输入:大学排名URL链接 输出:大学排 ...

  2. python爬虫实例之爬取智联招聘数据

    这是作者的处女作,轻点喷.... 实习在公司时领导要求学习python,python的爬虫作为入门来说是十分友好的,话不多说,开始进入正题. 主要是爬去智联的岗位信息进行对比分析出java和pytho ...

  3. Python爬虫实例(二)——爬取新冠疫情每日新增人数

    Python是世界上最美的语言 大家好,我是Henry! 疫情以来,相信大家每天都关注着疫情的实时动态,许多网站上也post了疫情的相关资料. 丁香园 百度 各个网站都会统计每日新增,刚学了Matpl ...

  4. Python爬虫实例:爬取猫眼电影——破解字体反爬

    字体反爬 字体反爬也就是自定义字体反爬,通过调用自定义的字体文件来渲染网页中的文字,而网页中的文字不再是文字,而是相应的字体编码,通过复制或者简单的采集是无法采集到编码后的文字内容的. 现在貌似不少网 ...

  5. python爬取b站搜索结果_Python爬虫实例:爬取猫眼电影——破解字体反爬,Python爬虫实例:爬取B站《工作细胞》短评——异步加载信息的爬取,Python爬虫实例:爬取豆瓣Top250...

    字体反爬 字体反爬也就是自定义字体反爬,通过调用自定义的字体文件来渲染网页中的文字,而网页中的文字不再是文字,而是相应的字体编码,通过复制或者简单的采集是无法采集到编码后的文字内容的. 现在貌似不少网 ...

  6. Python爬虫实例:爬取国内所有医院信息

    本博客仅用于技术讨论,若有侵权,联系笔者删除. 此次的目的是爬取国内医院的基本信息,并按省份存储.爬取的黄页是医院列表.以下是结果图: 一.初始化数据 初始化基本的数据,包括global变量,省份名称 ...

  7. Python爬虫实例:爬取 viveport 上 1406 款VR游戏信息

    这次我们准备爬取 HTC VIVE 的VR内容平台--Viveport,上面有 1406 款优质的 VR 游戏/应用,本次我们的目标就是把这些游戏的详细信息爬取下来. 首先我们去该网站看一下(http ...

  8. Python爬虫实例:爬取微信公众号图片(表情包)

    背景: 在学习了简单爬虫的编写之后,我试图通过编写爬取公众号图片(表情包)来丰富我的聊天技能,亦不致于败给各种熊猫头. 在学习了requests库之后,就能够很轻松地爬取静态页面的信息,把网页对象获取 ...

  9. python爬虫实战:爬取西刺代理网站,获取免费的代理IP

    爬取的网站链接:西刺网站 import requests import chardet import random import time from bs4 import BeautifulSoup ...

最新文章

  1. 数据分析(EDA)学习总结!
  2. 【南科大发言】人类赋予人工智能伦理,生物进化方向的突破是关键
  3. 现代密码学5.2--域扩张:Merkle-Damgard Transform
  4. MFC中使用控制台窗口输入输出
  5. 前端学习(2764):v-bind和v-for
  6. 提交app时候90475,90474
  7. BIC无代码绘制差异基因火山图
  8. 基于JAVA+SpringBoot+Mybatis+MYSQL的电影院管理系统
  9. 【Axure电商原型】电商APP高保真原型+移动端通用版电商app模板+用户中心+会员体系+内容推荐+社区体系+运营推广+订单流程+运营活动+订单管理+售后及服务+秒杀专区+特惠推荐+高保真移动端电商
  10. Linux可插拔认证模块(PAM)的配置文件、工作原理与流程
  11. license.dat文件不存在
  12. C#修改MAC地址类及操作网卡类
  13. 【HTML】-- 用户注册表单
  14. 有符号整数除以无符号整数会发生什么??!!!
  15. 联想服务器能够上固态硬盘吗,联想Y400能不能装固态硬盘 需要什么接口的
  16. 如何写项目方案经验总结
  17. 4.5 没有自学,不是大学——《逆袭大学》连载
  18. ASP.NET MVC4 PRG模式
  19. 出价策略正处于学习期...
  20. 使用vscode编译器:检测到 #include 错误。请更新 includePath。已为此翻译单元,无法打开源文件<iostream>

热门文章

  1. 聚力赋能·共享共创|吉鼎科技与厦门6大高校“敏捷开发教学研讨会”圆满成功!
  2. 如何用Python操作Excel自动化办公?一个案例教会你openpyxl——公式计算和数据处理
  3. C++ 高精度除法运算(c=a/b)
  4. 再访洪小文:AI,誓不作恶
  5. 软件测试的底层逻辑思维是什么?
  6. FileIterator
  7. 常用的学生、课程、成绩、教师表的查询
  8. 设计期权套期保值方案时应注意的问题
  9. 设计模式之: 享元模式
  10. 使用苹果cms建视频类的网站