疏窗

  • 首页
  • 生活
  • Java
  • Python
  • Golang
  • 其他
  • 归档

  • 搜索
leetcode jdk 生活 nas nosql 数据库 线程 爬虫 中间件

scrapy学习记录(入门)

发表于 2020-05-26 | 分类于 Python | 0 | 阅读次数 1391

安装 :

pip install scrapy(网上说直接装会有依赖问题,不知道我是以前已经装好了依赖还是安装的时候自动下了其他依赖)

创建项目 :

scrapy startproject 项目名称

编写项目代码 :

在项目中的spider文件夹内创建一个新的py文件并引入scrapy
而后编写一个class 继承scrapy.Spider类并重写start_request 和 parse方法
请求url代码回调具体逻辑在重写的parse进行scrapy.Request(url=url, callback=self.parse)

import scrapy

class itest(scrapy.Spider):
    name = "itest"  #定义爬虫名字
    def start_requests(self): 
        urls = ['https://againriver.com']   #定义请求地址,可以多个
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)   #访问请求地址

    def parse(self, response):
        filename = "index.html"  # 自定义文件名称
        with open(filename, 'wb') as f: 
            f.write(response.body)   #把访问到的数据写入文件
        self.log("保存文件:%s" % filename)

编写完成后打开命令行进入项目根目录输入scrapy crawl 上面代码中定义的爬虫名字这里是itest

总结:一开始把自定义的name写在itest类上面时,无法运行爬虫,报的爬虫itest不存在,而当我把name写在itest类里面时则运行成功。事实证明我还是不够细心,以后要多注意。

简化写法:

class itest(scrapy.Spider):
    name = "itest"
    # def start_requests(self):
    #     urls = ['https://againriver.com']
    #     for url in urls:
    #         yield scrapy.Request(url=url, callback=self.parse)

    start_urls = ['https://againriver.com']

    def parse(self, response):
        filename = "index.html"
        with open(filename, 'wb') as f:
            f.write(response.body)
        self.log("保存文件:%s" % filename)

可以使用start_urls = ['https://againriver.com']代替了start_requests函数。(实际上就是使用默认的start_requests函数,并且该方法默认callback为parse函数,也就是说如果简写的话必须要声明parse函数,不然报callback is not defind错误)

打赏作者
疯子虾夫 微信支付

微信支付

疯子虾夫 支付宝

支付宝

  • 本文作者: 疯子虾夫
  • 本文链接: https://hefengwei.com/archives/1590473805
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# 线程
nginx 配置
scrapy学习记录(选择器与调试工具)
  • 文章目录
  • 站点概览
疯子虾夫

疯子虾夫

24 日志
5 分类
9 标签
RSS
Creative Commons
© 2025 疯子虾夫
由 Halo 强力驱动
|
主题 - NexT.Mist v5.1.4
赣ICP备2024026242号

粤公网安备 44010602005909号