python爬虫——Scrapy入门(爬取西刺代理ip和port)

一.创建项目

在这里插入图片描述
创建好的项目

在这里插入图片描述

二.创建爬虫

1.创建

一定要先进入刚才创建的爬虫项目文件中再创建爬虫

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对比未创建爬虫,发现多了一个xici.py文件
在这里插入图片描述
在这里插入图片描述

2.查看网站君子协议(robots):

在这里插入图片描述

3.解释爬虫文件

在这里插入图片描述

三.分析网站

1.提取数据的方法

可以参考我以前的博客
(1)正则表达式
(2)Xpath:从html中提取数据的语法
(3)CSS:从html中提取数据语法
(4)BeautifulSoup

2.用xpath提取ip和端口号

在这里插入图片描述
在这里插入图片描述

selectors = response.xpath('//tr')  # 先选择所有的tr标签
for selector in selectors:
	# 第一种获取方法get()
    ip = selector.xpath('./td[2]/text()').get()  # get表示获取一个元素,getall表示获取所有元素
    port = selector.xpath('./td[3]/text()').get()
    # 第二种获取方法extract()
    ip = selector.xpath('./td[2]/text()').extract_first()  # extract_first表示获取第一个元素,extract表示获取所有元素
    port = selector.xpath('./td[3]/text()').extract_first()

3.设置请求头

在这里插入图片描述

4.运行爬虫

import scrapy  # 导入scrapy


# 创建爬虫类,并且继承自scrapy.Spider类(最基础的类,另外几个类都继承自这个)
class XiciSpider(scrapy.Spider):
    name = 'xici'  # 爬虫名字 必须唯一
    allowed_domains = ['xicidaili.com']  # 允许采集的域名
    start_urls = ['https://www.xicidaili.com/nn/5']  # 开始采集的网站

# 解析响应数据,提取数据或网址等 response就是网页源码
    def parse(self, response):
        """提取数据"""
        # 提取IP
        selectors = response.xpath('//tr')  # 先选择所有的tr标签
        for selector in selectors:
            ip = selector.xpath('./td[2]/text()').get()  # get表示获取一个元素,getall表示获取所有元素
            port = selector.xpath('./td[3]/text()').get()
            # ip = selector.xpath('./td[2]/text()').extract_first()  # extract_first表示获取第一个元素,extract表示获取所有元素
            # port = selector.xpath('./td[3]/text()').extract_first()
            print(ip, port)

在这里插入图片描述

在这里插入图片描述

5.翻页操作(上述只可提取一页)

在这里插入图片描述

		# 翻页处理(找到“下一页”的源代码)
        next_page = response.xpath('//a[@class="next_page"]/@href').get()
        if next_page:
            # 拼接网址
            next_url = 'https://www.xicidaili.com' + next_page
            # 发出请求Request ,callback表示回调函数,将请求得到的响应交给自己处理
            yield scrapy.Request(next_url, callback=self.parse)  # 生成器

6.保存在文件中(此时运行保存有风险,可能会被封ip,可以尝试用代理爬取,目前我还没学完,请多多包涵)

可以将文件保存在json格式、html格式、csv格式等的文件中

scrapy crawl xici -o ip.json

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值