(七)Scrapy爬虫的第一个实例(读书笔记)|Python网络爬虫与信息提取

来源: 网页链接【Python网络爬虫与信息提取】.MOOC. 北京理工大学
https://www.bilibili.com/video/av9784617/index_56.html#page=56

最近更新:2018-01-23

1.产生步骤

演示HTML页面地址:http://python123.io/ws/demo.html

(七)Scrapy爬虫的第一个实例(读书笔记)|Python网络爬虫与信息提取_第1张图片

(七)Scrapy爬虫的第一个实例(读书笔记)|Python网络爬虫与信息提取_第2张图片

1.1步骤一:建立一个Scrapy爬虫工程

1 )打开cmd:输人scrapy startproject python123,,如下截图:
这里输入的意思是定义一个工程,它的名字叫python123.


(七)Scrapy爬虫的第一个实例(读书笔记)|Python网络爬虫与信息提取_第3张图片

2 )根据工程文件存储的路径查看相对应的文件,如下截图


(七)Scrapy爬虫的第一个实例(读书笔记)|Python网络爬虫与信息提取_第4张图片
image.png

3)生成目录的介绍,如下截图:
  • scrapy.cfg这个配置,是将爬虫放在特定的服务器上,并且在服务器配置好相关的操作接口.对于本机使用爬虫,不需要改变部署的配置文件.
  • init.py,用户不需要编写
  • items.py需要继承scrapy库提供的ietms类,对于一般的例子用户不需要编写
  • middlewares.py,如果用户需要扩展middlewares的功能,则需要编写.
  • pipelines.py指的是框架中的pipelines模块
  • settings.py指的是Scrapy爬虫的文件,如果需要优化爬虫,则需要设置这个文件对应的配置项.
  • spiders 是在存放python123demo工程建立的爬虫

    其中的爬虫,要符合爬虫模版的约束
    (七)Scrapy爬虫的第一个实例(读书笔记)|Python网络爬虫与信息提取_第5张图片

    4 )spiders目录里面的文件介绍
    (七)Scrapy爬虫的第一个实例(读书笔记)|Python网络爬虫与信息提取_第6张图片

1.2步骤二:在工程中产生一个Scrapy爬虫

  • 在工程中执行爬虫,只需要执行一条命令即可.这条命令需要约定用户给出爬虫的名字以及所爬取的网站.在cmd中输入:scrapy genspider demo python123.io,这个命令仅限于生成一个demo.py具体截图如下:


    (七)Scrapy爬虫的第一个实例(读书笔记)|Python网络爬虫与信息提取_第7张图片
  • 在spiders目录下,增加了一个demo.py,这个文件也可以手工生成具体如下:
(七)Scrapy爬虫的第一个实例(读书笔记)|Python网络爬虫与信息提取_第8张图片
  • 查看demo.py这个 文件的内容
(七)Scrapy爬虫的第一个实例(读书笔记)|Python网络爬虫与信息提取_第9张图片

1 )是一个面向对象编写的类,这个类叫DemoSpider
2 )由于我们的名字叫demo,所以这个类名也叫demospider,名字也可以叫我们任何想叫的名字.
3 )这个类必须是继承与scrapy.Spider的子类.
4 )这里有个变量叫name,被赋值为demo,说明当前爬虫的名字叫demo.
5 )allowed_domains这个是用户提交给命令行的命名.这个爬虫在爬取网站的时候只能爬取这个域名以下的相关链接.
6 )start_urls以列表的形式包含一个或多个url就是scrapy框架要爬取的初始页面.
7 )def parse是解析页面一个空的方法.
8 )pass是处理响应,可以解析从网上爬取的内容,并形成字典类型,同时对网络中爬取的内容发现其中隐含的新的url.

1.3步骤三:配置产生的spider爬虫

  • 目的
    • 修改demo.py文件,能够按我们的要求去访问我们需要访问的链接.并对相关的链接内容进行爬取.
    • 对链接的解析部分定义的功能是返回html存成文件,
  • 代码的编写的框架
    • 更改爬取方法的具体功能,爬取方法有两个参数self, response.
    • self是面向对象是类所属关系的标记.
    • response是网络返回内容所存储或对应的对象.将response的内容写到html文件中
  • 代码的具体编写
    • 定义一个文件的名字fname
      从响应的url中提取文件的名字,作为保持本地文件名.
    • 返回的内容保持为文件.
  • 作用
    经过这样改造之后,我们的demo文件就可以爬取一个网页,并将网页的内容保存为html文件.
  • 完整的代码
import scrapy


class DemoSpider(scrapy.Spider):
    name = 'demo'
    #allowed_domains = ['python123.io']
    start_urls = ['http://python123.io/ws/demo.html']

    def parse(self, response):
        fname=response.url.split("/")[-1]
        with open(fname,"wb") as f:
            f.write(response.body)
        self.log("saved file %s." % name)
  • 对比原框架的代码
(七)Scrapy爬虫的第一个实例(读书笔记)|Python网络爬虫与信息提取_第10张图片

1.4运行爬虫,获取网页

在命令行cmd执行这个命令,输入:scrapy crawl demo 或scrapy bench demo
这里需要注意:我运行过程中,系统提示没有pypiwin32这个库,运行不了,后面我在cmd安装了pypiwin32就可以了,安装方法在cmd输入:pip install pypwin32.


(七)Scrapy爬虫的第一个实例(读书笔记)|Python网络爬虫与信息提取_第11张图片

1.5回顾

(七)Scrapy爬虫的第一个实例(读书笔记)|Python网络爬虫与信息提取_第12张图片
  • start_urls这是爬虫启动时最开始的链接.
  • parse这个方法是对爬虫返回的页面进一步解析并且操作的相关步骤,事实上这一行代码时scrapy框架提供的简化版的代码,对应的完整版的代码如下:
(七)Scrapy爬虫的第一个实例(读书笔记)|Python网络爬虫与信息提取_第13张图片
image.png
  • 两个版本的区别,如截图


    (七)Scrapy爬虫的第一个实例(读书笔记)|Python网络爬虫与信息提取_第14张图片

你可能感兴趣的:((七)Scrapy爬虫的第一个实例(读书笔记)|Python网络爬虫与信息提取)