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

scrapy shell http://www.xicidaili.com/nn/2

执行结果发现proxy360.cn response 返回200,西刺网返回500需要修改一下默认的请求头参数

3、项目文件结构

wKiom1li7cDwXvtKAABRQfsmN0g893.jpg-wh_50

4、需要修改settings文件的user agent通过浏览器代理抓取

USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36(KHTML, like Gecko)'

5、打开items文件,定义需要爬取的字段

scrapy


(scrapy.Item):
    ip = scrapy.Field()
    port = scrapy.Field()
    type = scrapy.Field()
    location = scrapy.Field()
    protocol = scrapy.Field()
    source = scrapy.Field()

6、打开proxy360Spider定义爬取的逻辑

wKiom1li9p2BzQAHAADFdplxcSM862.jpg

打开xiciSpider定义西刺网爬取的逻辑

scrapy
sys
sys.path.append()
items GetproxyItem
__author__=(scrapy.Spider):
    name = allowed_domains = []
    wds = []
    pages = start_urls = []
    type wds:
        i (pages + ):
            start_urls.append(+ type + + (i))
    (response):
        subSelector = response.xpath()
        items = []
        sub subSelector:
            item = GetproxyItem()
            item[] = sub.xpath().extract()[]
            item[] = sub.xpath().extract()[]
            item[] = sub.xpath().extract()[]
            sub.xpath():
                item[] = sub.xpath().extract()[]
            :
                item[] = sub.xpath().extract()[]
            item[] = sub.xpath().extract()[]
            item[] = items.append(item)
        items

7、定义爬取结果,数据处理层pipelines

分别将proxy360网站的数据存到prox360.txt文件

西刺网的爬取数据存到xicidaili.txt文件

wKiom1li9uXw5BPQAADXzoU8TtA886.jpg

8、打开settings里面关于pipelines的定义

wKioL1li9xyx-IecAAAcSamXeTs064.jpg

9、在spiders模块下分别执行,生成抓取的文本内容

scrapy crawl proxy360Spider

scrapy crawl proxy360Spider

wKiom1li88CwJetRAACw5yoesQg665.jpg-wh_50

10、爬取结果到此结束,但是并不是每一个代理都是可用的,所以需要我们再去验证一下,过滤出来可用的代理,getProxy模块下创建proxy文件获取可用代理

wKiom1li96OSjcqrAACfYFfWHkM224.jpg

wKiom1li96TR6DHaAACBOoHgxyM205.jpg

11、最后得到alive.txt文件存放可用的代理结果,至此结束