一步一步学Scrapy:step 1
admin
2023-07-30 21:36:45
0

Ubuntu下安装Scrapy

1、首先需要安装如下软件
Python 2.7
lxml
OpenSSL
pip or easy_install

2、安装必备软件
sudo apt-get install libevent-dev
sudo apt-get install python-dev
sudo apt-get install libxml2-dev
sudo apt-get install libxslt1-dev
sudo apt-get install python-setuptools

3、安装Scrapy
sudo apt-get install Scrapy

创建项目

以爬取mininova中的EBOOK种子链接、名称、大小为例
1、进入存储代码的目录中,运行下列命令
scrapy startproject mininova
该命令将会创建包含下列内容的mininova目录

mininova/
    scrapy.cfg
    mininova/
        __init__.py
        items.py
        pipelines.py
        settings.py
        spiders/
            __init__.py
            ...

这些文件分别是:

  • scrapy.cfg:项目的配置文件
  • mininova/:该项目的python模块。
  • mininova/items.py:项目中的item文件
  • mininova/pipelines.py:项目中pipelines文件
  • mininova/settings.py:项目的设置文件
  • mininova/spiders/:放置spider代码的目录

2、定义Item
编辑mininova目录中的items.py文件:

import scrapy

class MininovaItem(scrapy.Item):
    title = scrapy.Field()
    link = scrapy.Field()
    size = scrapy.Field()

3、编写第一个爬虫(Spider)
为了创建一个Spider,必须继承scrapy.Spider类,且定义一下三个属性:

  • name:用于区别Spider。该名字必须是唯一的,不可以为不同的Spider设定相同的名字。
  • start_urls:包含了Spider在启动时进行爬取的url列表。因此,第一个被获取到的页面将是其中之一。后续的URL则从初始的URL获取到的数据中提取。
  • parse():是spider的一个方法。被调用时,每个初始URL完成下载后生成的Response对象将会作为唯一的参数传递给该函数。该方法负责解析返回的数据(response data),提取数据(生成item)以及生成需要进一步处理的URL的Request对象。

以下为我们的第一个Spider代码,保存在mininova/spiders目录下的mininova_spider.py文件中:

import scrapy
from mininova.items import MininovaItem

class MininovaSpider(scrapy.Spider):
    name = \'mininova\'
    allowed_domains = [\'mininova.org\'] 
    start_urls = [\'http://www.mininova.org/sub/50/name/1\']

    def parse(self,response):
        sites = response.xpath(\'//table[@class=\"maintable\"]//tr\')
        for site in sites:
            item = MininovaItem()
            item[\'title\'] = site.xpath(\'td/a[not(@class=\"ti com\")]/text()\').extract()
            for url in site.xpath(\'td/a[@class=\"dl\"]/@href\').extract():
                item[\'link\'] = \'http://www.mininova.org\' + url
            for size in site.xpath(\'td[3]/text()\').extract():
                size = size.encode(\'utf-8\')
                item[\'size\'] = size.replace(\'\\xc2\\xa0\',\'\')
            yield item

4、爬取
进入项目的根目录,执行下列命令启动spider:
scrapy crawl mininova
5、保存爬取到的数据
scrapy crawl mininova -o items.json

下一步

下一篇将介绍分页爬取、存入数据库及一些设置。

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...