[爬虫] 学Scrapy,顺便把它的官方教程给爬下来

Posted bymo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[爬虫] 学Scrapy,顺便把它的官方教程给爬下来相关的知识,希望对你有一定的参考价值。

想学爬虫主要是因为算法和数据是密切相关的,有数据之后可以玩更多有意思的事情,数据量大可以挖掘挖掘到更多的信息。

之前只会通过python中的request库来下载网页内容,再用BeautifulSoup、re正则工具来解析;后来了解到Scrapy爬虫框架,现在入门先写个小小的爬虫项目,这里做个简单的总结和记录。

 

官方教程:https://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/overview.html(包括安装指南)

Github:https://github.com/scrapy

 

1. 创建项目

scrapy startproject -h
scrapy startproject scrapytutorial
cd scrapytutorial/
scrapy genspider scrapy_tutorial_spider scrapy-chs.readthedocs.io
mkdir output

 

2. 编写爬虫代码

# -*- coding: utf-8 -*-
import scrapy
import codecs


class ScrapyTutorialSpiderSpider(scrapy.Spider):
    name = scrapy_tutorial_spider
    # allowed_domains = [‘scrapy-chs.readthedocs.io‘]
    start_urls = [https://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/overview.html]

    def parse(self, response):
        print("response.url: %s" % response.url)

        # 保存完整网页内容到文件
        filename = response.url.split("/")[-1]
        print("filename: %s" % filename)
        with codecs.open("output/" + filename, "wb") as fw:
            fw.write(response.body)

        # TODO 提取关键信息

        # 遍历下一页
        next_url = response.css("div.rst-footer-buttons > a::attr(‘href‘)").extract()[0]
        if next_url is not None:
            next_url = response.urljoin(next_url)
            print("next_url: %s" % next_url)
            yield scrapy.Request(next_url)

 

3. 启动爬取

scrapy crawl scrapy_tutorial_spider

 完整爬下来有45个文件:

技术分享图片

 

因为刚上手,先按下面几步走:

(1) 把某个网页完整爬下来,保存到文件
(2) 追踪链接:通过提取感兴趣的页面的链接(例如想要下一页的内容)并进行追踪,获取更多的数据
(3) 动态解析网页,只提取感兴趣的部分内容并保存

 

目前还不太熟悉CSS选择器以及XPath表达式,关于第(3)部提取关键信息还没做,后续将会逐渐学习和完善。

(参考官网的两个例子:tutorialQuotesBot

 

另外,网上有很多不错的爬虫项目,可以用来练手:32个Python爬虫项目

爬虫可能涉及到定时爬取、账号注册和登录、验证码破解等等,还是挺有挑战性的~

以上是关于[爬虫] 学Scrapy,顺便把它的官方教程给爬下来的主要内容,如果未能解决你的问题,请参考以下文章

python 爬虫 scrapy学习之 查看确认爬虫获取的内容 查看蜘蛛看到的是否和你看到的一致

Python分布式爬虫必学框架Scrapy打造搜索引擎 学习教程

Python爬虫入门教程 30-100 高考派大学数据抓取 scrapy

Python分布式爬虫必学框架Scrapy打造搜索引擎 学习教程

大牛说 | 从爬虫框架scrapy入手学Python

Python爬虫教程-30-Scrapy 爬虫框架介绍