简单爬虫-爬取免费代理ip

环境:python3.6

主要用到模块:requests,PyQuery

代码比较简单,不做过多解释了

#!usr/bin/python
# -*- coding: utf-8 -*-
import requests
from pyquery import PyQuery as pq

class GetProxy(object):
    def __init__(self):
        # 代理ip网站
        self.url = ‘http://www.xicidaili.com/nn/‘
        self.header = {‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 ‘+
                          ‘(KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36‘}
        self.file = r‘F:\python\code2\get_proxy\proxies.txt‘
        # 用于检查代理ip是否可用
        self.check_url = ‘https://www.python.org/‘
        self.title = ‘Welcome to Python.org‘

    def get_page(self):
        response = requests.get(self.url, headers=self.header)
        # print(response.status_code)
        return response.text

    def page_parse(self, response):
        stores = []
        result = pq(response)(‘#ip_list‘)
        for p in result(‘tr‘).items():
            if p(‘tr > td‘).attr(‘class‘) == ‘country‘:
                ip = p(‘td:eq(1)‘).text()
                port = p(‘td:eq(2)‘).text()
                protocol = p(‘td:eq(5)‘).text().lower()
                # if protocol == ‘socks4/5‘:
                #     protocol = ‘socks5‘
                proxy = ‘{}://{}:{}‘.format(protocol, ip, port)
                stores.append(proxy)
        return stores

    def start(self):
        response = self.get_page()
        proxies = self.page_parse(response)
        print(len(proxies))
        file = open(self.file, ‘w‘)
        i = 0
        for proxy in proxies:
            try:
                check = requests.get(self.check_url, headers=self.header, proxies={‘http‘: proxy}, timeout=5)
                check_char = pq(check.text)(‘head > title‘).text()
                if check_char == self.title:
                    print(‘%s is useful‘%proxy)
                    file.write(proxy + ‘\n‘)
                    i += 1
            except Exception as e:
                continue
        file.close()
        print(‘Get %s proxies‘%i)

if __name__ == ‘__main__‘:
    get = GetProxy()
    get.start()
时间: 2024-10-08 10:21:54

简单爬虫-爬取免费代理ip的相关文章

PHP简单爬虫 爬取免费代理ip 一万条

目标站:http://www.xicidaili.com/ 代码: <?php require 'lib/phpQuery.php'; require 'lib/QueryList.php'; require "db/shared/ez_sql_core.php"; require "db/mysql/ez_sql_mysql.php"; require "public/function.php"; use QL\QueryList; //

C#多线程爬虫抓取免费代理IP

这里用到一个HTML解析辅助类:HtmlAgilityPack,如果没有网上找一个增加到库里,这个插件有很多版本,如果你开发环境是使用VS2005就2.0的类库,VS2010就使用4.0,以此类推..........然后直接创建一个控制台应用,将我下面的代码COPY替换就可以运行,下面就来讲讲我两年前做爬虫经历,当时是给一家公司做,也是用的C#,不过当时遇到一个头痛的问题就是抓的图片有病毒,然后系统挂了几次.所以抓网站图片要注意安全,虽然我这里没涉及到图片,但是还是提醒下看文章的朋友. clas

Python实现爬取可用代理IP

在实现爬虫时,动态设置代理IP可以有效防止反爬虫,但对于普通爬虫初学者需要在代理网站上测试可用代理IP.由于手动测试过程相对比较繁琐,且重复无用过程故编写代码以实现动态抓取可用的代理IP.动态代理IP保存在Json文件中,以供后续具体项目爬虫使用,但所爬取的代理IP是免费IP,所以可能出现当时爬取能用,过一段时间无法使用的情况. 1) 先从西刺代理网站上爬取前10页,速度较快的IP,保存到proxies数组中,其中proxy使用的是requests.get()可直接使用字典格式 1 print(

python爬取免费优质IP归属地查询接口

python爬取免费优质IP归属地查询接口 具体不表,我今天要做的工作就是: 需要将数据库中大量ip查询出起归属地 刚开始感觉好简单啊,毕竟只需要从百度找个免费接口然后来个python脚本跑一晚上就ok了嘛~但是,网上免费接口要么限制访问频率(淘宝的),要么限制访问次数(百度及其他) 没辙了,从百度找到了几个在线查询的接口,要么不够准确(或者说她们的数据库太旧了),要么就是速度太慢了,跟限制访问似的(没办法,小规模人家的服务器的确不够好) 于是乎就想到了百度首页的ip接口,就这货: 为了防止泄露

Python 正则练习(一) 爬取国内代理ip

简单的正则表达式练习,爬取代理 ip. 仅爬取前三页,用正则匹配过滤出 ip 地址和 端口,分别作为key.value 存入 validip 字典. 如果要确定代理 ip 是否真的可用,还需要再对代理 ip 再进行筛查过滤,最终仅仅保存真实可用代理 ip. 可能需要修改的内容: xpath 替代正则进行抓取 ip 和端口: 验证代理 ip 是否可用: 再存入mogodb 数据库替代字典. import re import requests from collections import defa

scrapy抓取免费代理IP

1.创建项目 scrapy startproject getProxy 2.创建spider文件,抓取www.proxy360.cn www.xicidaili.com两个代理网站内容 cd项目的spiders模块下执行 scrapy genspider proxy360Spider proxy360.cn scrapy genspider xiciSpider xicidaili.com scrapy shell http://www.proxy360.cn/Region/China scra

python2.7爬取可用代理IP

import urllib2 import random import time import re #from lxml import etree  #第三方模块 def get_proxy(page): headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36' } r

Python 简单爬虫 爬取知乎神回复

看知乎的时候发现了一个 “如何正确地吐槽” 收藏夹,里面的一些神回复实在很搞笑,但是一页一页地看又有点麻烦,而且每次都要打开网页,于是想如果全部爬下来到一个文件里面,是不是看起来很爽,并且随时可以看到全部的,于是就开始动手了. 工具 1.Python 2.7 2.BeautifulSoup 分析网页 我们先来看看知乎上该网页的情况: 网址: ,容易看到,网址是有规律的,page慢慢递增,这样就能够实现全部爬取了. 再来看一下我们要爬取的内容: 我们要爬取两个内容:问题和回答,回答仅限于显示了全部

如何防止网站被爬虫爬取的几种办法

如何防止网站被爬虫爬取的几种办法 小 中 大 chen 2013-10-08 23:26 Linux 547 次浏览 抢沙发 今天想对一个问题进行分析和讨论,就是关于爬虫对网站页面爬取的问题,有些网站通过爬虫去采集其它的网站页面信息作为己用,大量的爬取行为会对web服务器有比较性能有影响,主要的表现就是会变得很慢. 对于如何防止网站被爬取,我想从以下几种方法去分析: 1.基于程序本身去防止爬取:作为爬虫程序,爬取行为是对页面的源文件爬取,如爬取静态页面的html代码,可以用jquery去模仿写h