scrapy

安装scrapy参考链接

https://blog.youkuaiyun.com/qq_42543250/article/details/81347368

1.创建项目scrapy startproject XXX(项目名字)

2.创建爬虫 scrapy genspider 爬虫名字  网站域名

  • 注意

       1)爬虫的名字不要和项目名字一样

       2)网站域名是允许爬虫采集的域名

3.分析网站

    *提取数据

        -正则表达式

        -XPath-->从HTML中提取数据的语法

        -CSS-->从HTML中提取数据的语法

        -response.xpath(xpath语法).get()

           -get()是得到一个元素

           -getall()是得到多个元素

4.运行爬虫

    *scrapy crawl 爬虫名字

      scrapy.Request(next_url,callback=self.parser)#生成器

      Request()发出请求 类似requests.get()

      callback 是将发出去的请求得到的响应交还给自己处理

      注意:回调函数不要写()只写函数名字

    *执行爬虫并保存数据

      scrapy crawl 爬虫名字  -o ip.json

      scrapy crawl 爬虫名字  -o ip.csv

5.示例代码

# -*- coding: utf-8 -*-
import scrapy
#创建爬虫类 并且继承自scrpay.Spider--->最基础的类 另外几个类都是继承自这个
class XicidailiSpider(scrapy.Spider):
    name = 'xicidaili'#爬虫名字-->必须唯一
    allowed_domains = ['xicidaili.com']#允许采集的域名
    start_urls = ['https://www.xicidaili.com/wn/']#开始采集的网站
    #解析响应文件 提取数据 或者网址等response 就是网友源码
    def parse(self, response):
        #提取数据
        #提取IP PORT
        selectors=response.xpath('//tr')#选择所有的tr标签
        #循环遍历tr标签下的td标签
        for selector in selectors:
            ip=selector.xpath('./td[2]/text()').get()#.在当前节点下继续选择
            port=selector.xpath('./td[3]/text()').get()
            #print(ip,port)
            items={
                'ip':ip,
                'port':port
            }
            yield items
        #翻页操作
        next_page = response.xpath('//a[@class="next_page"]/@href').get()
        if next_page:
            print(next_page)
            #拼接网址
            #next_url='https://www.xicidaili.com'+next_page
            next_url=response.urljoin(next_page)
            #发出请求 Request callback 是回调函数 就是将请求得到的响应交给自己处理
            #相当于递归
            yield scrapy.Request(next_url,callback=self.parse)#生成器

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值