zoukankan      html  css  js  c++  java
  • [爬虫] 学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爬虫项目

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

  • 相关阅读:
    [JavaScript]编写一份会动的简历
    Vue.js 创建一个 CNODE 社区(1)
    hdu 2051
    hdu 2050
    hdu 2048
    赫夫曼编码
    R语言的学习(四)
    R语言的学习(三)
    R语言的学习(二)
    R语言的学习(一)
  • 原文地址:https://www.cnblogs.com/bymo/p/9373622.html
Copyright © 2011-2022 走看看