当前位置 : 主页 > 操作系统 > centos >

CentOS7下安装Scrapy步骤详细介绍

来源:互联网 收集:自由互联 发布时间:2023-07-29
CentOS 7下安装Scrapy步骤详细介绍安装前准备 在安装Scrapy之前,需要确保安装了Python和pip包管理工具。 安装Python 在CentOS 7上,可以使用以下命令安装Python: $ sudo yum install -y python 安装pip
CentOS 7下安装Scrapy步骤详细介绍 安装前准备

在安装Scrapy之前,需要确保安装了Python和pip包管理工具。

安装Python

在CentOS 7上,可以使用以下命令安装Python:

$ sudo yum install -y python
安装pip

pip是Python的包管理工具。使用以下命令安装pip:

$ sudo yum install -y epel-release
$ sudo yum install -y python-pip
安装Scrapy

在安装Python和pip之后,可以使用pip安装Scrapy:

$ sudo pip install scrapy
验证Scrapy是否安装成功

可以使用以下命令验证Scrapy是否安装成功:

$ scrapy -h

如果Scrapy已经安装成功,应该可以看到Scrapy的帮助文档。

示例说明 示例1: 爬取网站

这里以爬取一个简单的网站为例。假设我们要爬取url为http://quotes.toscrape.com/的网站。

$ scrapy startproject myproject
$ cd myproject
$ scrapy genspider quotes_spider quotes.toscrape.com

在myproject/spiders目录中会生成一个quotes_spider.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):
        page = response.url.split("/")[-2]
        filename = 'quotes-%s.html' % page
        with open(filename, 'wb') as f:
            f.write(response.body)
        self.log('Saved file %s' % filename)

运行如下命令:

自由互联热门推荐:PDF电子发票识别软件,一键识别电子发票并导入到Excel中!10大顶级数据挖掘软件!人工智能的十大作用!

$ scrapy crawl quotes

Scrapy会下载http://quotes.toscrape.com/page/1/和http://quotes.toscrape.com/page/2/上的网页,并将网页保存到当前目录下的quotes-1.html和quotes-2.html文件中。

示例2: 爬取Amazon网站

这里以爬取Amazon网站为例。假设我们要爬取url为https://www.amazon.com的网站。

$ scrapy startproject myproject
$ cd myproject
$ scrapy genspider amazon_spider amazon.com

在myproject/spiders目录中会生成一个amazon_spider.py文件。打开这个文件,加入如下代码:

import scrapy

class AmazonSpider(scrapy.Spider):
    name = "amazon"
    allowed_domains = ["amazon.com"]
    start_urls = [
        "https://www.amazon.com/books-used-books-textbooks/b/ref=nav_shopall_bo_t3?ie=UTF8&node=283155"
    ]

    def parse(self, response):
        for sel in response.xpath('//ul[@class="s-result-list s-col-3"]/li'):
            title = sel.xpath('div/div[2]/div[@class="a-row"]/a/@title').extract_first()
            price = sel.xpath('div/div[4]/div[1]/a/span/text()').extract_first()
            if title is not None and price is not None:
                yield {
                    'title': title,
                    'price': price
                }

        next_page_url = response.xpath('//a[text()="Next"]').extract_first()
        if next_page_url is not None:
            yield scrapy.Request(response.urljoin(next_page_url), callback=self.parse)

运行如下命令:

$ scrapy crawl amazon

Scrapy会爬取Amazon网站上的二手书的标题和价格,并将这些信息保存到命令行中。如果Amazon网站上有多页结果,Scrapy会继续翻页并继续爬取。

上一篇:CentOS 7 安装 MySQL 5.6遇到的各种问题小结
下一篇:没有了
网友评论