Python scrapy入门
发布于 7 年前 作者 Andyliwr 3835 次浏览 来自 分享

安装scrapy

1、 windows下安装 python安装包的时候依赖关系复杂,有时候存粹使用pip install xxx并不能安装成功,我们得找条捷径。参考官网给的安装教程,我选择了使用anaconda。可是国内访问国外网站很慢,而且奇葩的时anaconda还很大,大概400多M.。当我发现我睡了一觉起来还没有下载成功的时候,果断点击了取消下载。这里给大家推荐两个镜像:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes

总之呢,下载下来anaconda的安装exe文件,然后一直点击下一步安装就行。windows版本的anaconda还带有一个管理界面,安装包只需要搜索下,点击安装就好了。而且不用每次打开cmd去激活anaconda,管理界面也有打开cmd和Ipython的快捷方式。 anaconda包管理器 anaconda打开终端

2、 linux下安装 linux下的安装和window下类似,只是是下载xxx.sh文件,最后就是阅读安装协议,配置安装地址之类的。

sudo ./xxx.sh

scrapy创建以及运行项目

创建项目,在终端中输入scrapy startproject first_spider,创建完成之后项目结构如下:

tutorial/
  scrapy.cfg          # 部署爬虫的配置文件
  tutorial/           # 项目根目录
    __init__.py
    items.py          # 定义每个爬虫需要爬取的数据结构
    pipelines.py      # 处理爬虫得到的数据,去重,存入数据库
    settings.py       # 爬虫设置
    spiders/          # 爬虫目录,放置所有的爬虫
      __init__.py

1、 新建一个爬虫axdzs

# genspider后面的第一个参数是爬虫的名称,第二个是爬虫爬取的网址
scrapy genspider quotes quotes.toscrape.com

2.、修改spiders目录下新生成的quotes.py文件为如下代码

import scrapy


class QuotesSpider(scrapy.Spider):
    name = "quotes" # 定义爬虫的名字

    # 发送请求
    def start_requests(self):
        urls = [
            'http://quotes.toscrape.com/page/1/',
            'http://quotes.toscrape.com/page/2/',
        ]
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    # 处理请求返回的数据
    def parse(self, response):
        # response相当于一个html对象,里面包含原页面所有html元素
        page = response.url.split("/")[-2]
        filename = 'quotes-%s.html' % page
        # 打开文件,将response存储进去
        with open(filename, 'wb') as f:
            f.write(response.body)
        self.log('Saved file %s' % filename)

3、 运行爬虫

scrapy crawl quotes

在控制台看到如下输出,并且项目根目录下多了两个文件 — quotes1.html和quotes2.html:

2016-12-16 21:24:05 [scrapy.core.engine] INFO: Spider opened
2016-12-16 21:24:05 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2016-12-16 21:24:05 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2016-12-16 21:24:05 [scrapy.core.engine] DEBUG: Crawled (404) <GET http://quotes.toscrape.com/robots.txt> (referer: None)
2016-12-16 21:24:05 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://quotes.toscrape.com/page/1/> (referer: None)
2016-12-16 21:24:05 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://quotes.toscrape.com/page/2/> (referer: None)
2016-12-16 21:24:05 [quotes] DEBUG: Saved file quotes-1.html
2016-12-16 21:24:05 [quotes] DEBUG: Saved file quotes-2.html
2016-12-16 21:24:05 [scrapy.core.engine] INFO: Closing spider (finished)

如此一个最简单的爬虫就写好了,有木有很简单? 在接下来的文章,我将继续介绍scrapy的进阶内容,敬请期待。如果你有任何的疑问,欢迎写邮件到我的邮箱(andyliwr@outlook.com) 文章详情请参考我的博客 http://www.andylistudio.com/2017/10/28/python_scrapy_rumen/

回到顶部