在爬虫之路上,面对反爬虫措施,我们该怎样解决呢,当然,正所谓”你有反爬策略,我也有过墙梯”,所以下面将使用scrapy
来爬取免费代理ip,让我们从此不在害怕IP被封了.由于免费代理比较多,这里就以西刺代理为例
相关的代码已经上传到GitHub
GitHub地址 : https://github.com/stormdony/scarpydemo,里面有一些scrapy的demo,欢迎fork
和star
1.创建scrapy项目
scrapy startproject get_ip_demo
2.创建spider
scrapy genspider get_ip www.xicidaili.com
通过观察网站,找到需要获取的数据
这里主要使用xpath
来定位
# -*- coding: utf-8 -*-
import telnetlib
import scrapy
from get_ip_demo.items import GetIpDemoItem
class GetIpSpider(scrapy.Spider):
name = 'get_ip'
allowed_domains = ['xicidaili.com']
start_urls = ['http://www.xicidaili.com/']
def parse(self, response):
ip_list = response.css('.odd')
for each_ip in ip_list:
ip = each_ip.xpath('td[2]/text()').extract_first()
port = each_ip.xpath('td[3]/text()').extract_first()
province = each_ip.xpath('td[4]/text()').extract_first()
alive = each_ip.xpath('td[7]/text()').extract_first()
active = each_ip.xpath('td[8]/text()').extract_first()
item = GetIpDemoItem()
item['ip'] = ip
item['port'] = port
item['province'<