scrapy的安装最新完整版(包括坑的预处理)

  • 环境的安装

  — mac 和 Linux的不要太轻松,直接:pip install scrapy

  — windows相比而言可是麻烦不少,分以下几部分安装:

    (1)pip install wheel

    (2)下载Twisted,下载地址为 http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted,下载对应版本的Twisted 

    cp后面的数字对应你的python版本,比如笔者的python是3.7,就下载cp37m。

    (3)安装Twisted:pip install Twisted‑17.1.0‑cp36‑cp36m‑win_amd64.whl,下载好上面的.whl文件后,最好是把它放到对应的项目空间中,记住这个路径,否则会很麻烦(笔者就因为路径的问题,折腾了一晚上......),比如:我放到了这里:

    (4)安装pywin32,python3.7之前的好像直接在pycharm中或者是通过pip命令行就可以安装,但是我的是python 3.7,既不能在pycharm中直接按照也不能通过pip安装,只能手动安装了(骂骂咧咧...),打开 https://github.com/mhammond/pywin32/,往下翻,有:

     点击进入,选择自己对应的版本:

    一直Next,最后Finish,安装完毕。

    【注意:pywin32下载的.exe一定要和Twisted的.whl放在同一个目录下,这样在后面安装scrapy时候会方便很多!!!】

    (5)安装scrapy,直接在pycharm的终端Terminal输入pip命令,如果之前的路径设置好的话,会很快很顺利的安装好,如果路径没弄好的话会在安装某个包的地方卡死,然后超时报错,网上虽然有对应的解决方案是延长时间,pip命令输为:pip --default-timeout=1000 install -U scrapy,虽然解决了超时报错的问题,但这样安装会很慢很慢,个人尝试了这种方法,一直是4.5K/s,安装好得猴年马月(家里的网络还是不错的......)

    安装完毕后,在终端输入scrapy没有报错则是成功安装。

  • 创建工程

    在终端输入命令:

    scrapy startproject ProName

  创建项目成功后,看看项目的文件目录,首先会生成一个spiders的子目录,里面存放的是爬虫源文件,还有配置文件scrapy.cfg和settings.py。

  • 在spiders子目录中创建爬虫文件

    在终端输入命令:

    cd ProName

    scrapy genspider spiderName www.xxx.com(xxx后面可以在代码中直接修改)

import scrapy

class FirstSpider(scrapy.Spider):
    # 爬虫文件的名称,唯一标识,后面会根据该标识定位该文件
    name = 'first'

    # 允许的域名,用来限定start_urls列表中哪些url可以进行请求发送,不过一般不使用,注释掉
    allowed_domains = ['www.xxx.com']

    # 起始的url列表,该列表中存放的url会被scrapy自动进行请求发送,代替了之前requests手动get/post请求
    start_urls = ['https://www.baidu.com','https://www.sogou.com']

    # 用作数据解析,response参数表示的是请求成功后对应的响应对象
    def parse(self, response):
        print(response)
  • 执行工程

    scrapy crawl spiderName

接下来涉及到一些简单配置,以上述代码运行为例:

   打开setting.py,第20行意思是遵守robots协议,在之前就说过,每个门户网站都会设定一个robots协议,规定哪些是可以爬取的数据哪些不可以爬取,如果遵守的话我们几乎爬不到任何内容,所以这里要改为False。

  下图为运行结果:

   可以看到,爬取的内容已经打印出来了,但却包含在很多密密麻麻的日志文件中,并不直观也不利于我们直接了当的看到运行结果,可如果把日志文件都不打印的话,如果有报错或者警告的话,我们也查看不到,所以我们要在配置文件中设置:

  设置好了再次运行:

  可以看到只运行了输出结果,没有多于日志信息。

  把代码改错,再试一下,看看情况:

   可以看到,只有提示错误的日志,没有多于内容,一目了然。

posted @ 2022-01-25 09:57  Sunshine_y  阅读(250)  评论(0编辑  收藏  举报