«

scrapy的入门使用

时间:2023-2-28 23:51     作者:wen     分类: Python


一、安装scrapy

pip install scrapy

二、scrapy项目开发流程

  1. 创建项目:
    scrapy startproject mySpider
  2. 生成一个爬虫:
    scrapy genspider wenxk wenxk.top
  3. 提取数据:
    根据网站结果在spider中实现数据采集相关内容
  4. 保存数据:
    使用pipeline进行数据后续处理和保存

三、创建项目

通过命令将scrapy项目的文件生成出来,后续步骤都是在项目文件中进行相关操作
创建scrapy项目的命令
scrapy startproject <项目名称>
示例:
scrapy startproject myspider

四、创建爬虫

命令:在项目路径下执行:
scrapy genspider <爬虫名字><允许爬取的域名>
爬虫名字:作为爬虫运行时的参数
运行爬取的域名:为对于爬虫设置的爬取范围,设置之后用于过滤爬取的URL,如果爬取的url于允许的域不通则被过滤掉。
示例:

cd myspider
scrapy genspider wenxk wenxk.top

五、完善爬虫

  1. 修改内容
import scrapy

class WenxkSpider(scrapy.Spider):
    name = 'wenxk'
    allowed_domains = ['wenxk.top']
    start_urls = ['http://wenxk.top/']

    def parse(self, response):
        node_list = response.xpath("//div[@class='views-row']")
        for node in node_list:

            temp = {
                'title': node.xpath('./article/header/h2/a/span/text()').extract_first(),
                'href': node.xpath('./article/header/h2/a/@href')[0].extract()
            }
            # xpath方法返回的是选择器对象列表,extract()用于从选择器对象中提取数据
            # xpath结果为只含有一个结果的列表,可以使用extract_first(),没有结果返回None,如果为多个使用extract()
            print(temp)
            yield temp
        pass

注意:

  1. 定位元素以及提取数据、属性的方法
    解析并获取scrapy爬虫中的数据:利用xpath规则字符串进行定位和提取

    • response.xpath方法的返回结果是一个类似list的类型,其中包含的是selector对象,操作和列表一样,但是有一些额外的方法。
    • 额外方法extract():返回一个包含有字符串的列表
    • 额外方法extract_first():返回列表中的第一个字符串,列表为空没有返回None
  2. response响应对象的常用属性

    • response.url:当前响应的URL地址
    • response.request.url:当前响应对象的请求的URL地址
    • response.headers:响应头
    • response.requests.headers:当前响应的请求头
    • response.body:响应体,也就是html代码,byte类型
    • response.status:响应状态码

六、保存数据

利用管道pipeline管道来处理(保存)数据

  1. 在pipelines.py文件中定义对数据的操作
    • 定义一个管道里
    • 重写管道类的process_item方法
    • process_item方法处理完item之后必须返回给引擎
from itemadapter import ItemAdapter

class MyspiderPipeline:
    # 爬虫文件中提取数据的方法 yield一次item,就会运行一次
    # 该方法为固定名称的函数
    def process_item(self, item, spider):

        print(item)

        # 默认使用完管道之后需要将数据返回给引擎
        return item
  1. 在setting.py配置启用管道,在65行位置
    ITEM_PIPELINES = {
    'myspider.pipelines.MyspiderPipeline': 300,
    }

    配置项中键为使用的管道类,管道类使用.(点)进行分割,第一个为项目目录,第二个为文件,第三个为定义的管道类。
    配置项中值为管道的使用顺序,设置的数值越小越优先执行,该值一般设置为1000以内。

七、运行scrapy

命令:在项目目录下执行
scrapy crawl <爬虫名字>
示例:
scrapy crawl wenxk

标签: 爬虫