python中的Scrapy框架使用

ScrapySheel(https://scrapy-chs.readthedocs.io/zh_CN/latest/intro/overview.html)
    Scrapy终端是一个交互终端,供您在未启动spider的情况下尝试及调试您的爬取代码。 
    其本意是用来测试提取数据的代码,不过您可以将其作为正常的Python终端,在上面测试任何的Python代码。
    该终端是用来测试XPath或CSS表达式,查看他们的工作方式及从爬取的网页中提取的数据。
    在编写您的spider时,该终端提供了交互性测试您的表达式代码的功能,免去了每次修改后运行spider的麻烦。
    一旦熟悉了Scrapy终端后,您会发现其在开发和调试spider时发挥的巨大作用。
安装:
    1、安装LXMl 一定要看多少版本的python来安装 系统多少位(https://pypi.org/project/lxml/)
        pip install lxml
    2、安装twisted 一定要看多少版本的python来安装 系统多少位(https://pypi.org/project/Twisted/)
        pip install Twisted
    3、安装Scrapy
        pip install scrapy
        关联安装
        pip install    pypiwin32
    
    
创建项目
    在开始爬取之前,您必须创建一个新的Scrapy项目。 进入您打算存储代码的目录中,运行下列命令:
    1、scrapy startproject tutorial(tutorial:项目的名称)
        该命令将会创建包含下列内容的 tutorial 目录:
        tutorial/
            scrapy.cfg
            tutorial/
                __init__.py
                items.py
                pipelines.py
                settings.py
                spiders/
                    __init__.py
                    ...
        这些文件分别是:
        scrapy.cfg: 项目的配置文件
        tutorial/: 该项目的python模块。之后您将在此加入代码。
        tutorial/items.py: 项目中的item文件.
        tutorial/pipelines.py: 项目中的pipelines文件.
        tutorial/settings.py: 项目的设置文件.
        tutorial/spiders/: 放置spider代码的目录.
        
    
    2、新创建一个Spider(虫),您必须继承 scrapy.Spider 类, 且定义以下三个属性:
        2.1、在项目中创建一个Spider(虫)
            scrapy genspider 爬虫名 域名(不用加http,执行完本命令以后会在爬虫项目中出现一个新的py文件刷新)
            
                name: 用于区别Spider。 该名字必须是唯一的,您不可以为不同的Spider设定相同的名字。
                
                start_urls: 包含了Spider在启动时进行爬取的url列表。 因此,第一个被获取到的页面将是其中之一。
                后续的URL则从初始的URL获取到的数据中提取。
                
                parse()是spider的一个构造方法。通过response响应中的数据都会在这个方法中, 该方法负责解析返回的数据(response data),
                提取数据(生成item)以及生成需要进一步处理的URL的 Request 对象。
                
                import scrapy
                class DmozSpider(scrapy.spiders.Spider):
                    name = "dmoz"
                    allowed_domains = ["dmoz.org"] #不能超过域名
                    start_urls = [
                        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
                        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
                    ]
                    //其中response是返回的数据
                    def parse(self, response):
                        filename = response.url.split("/")[-2]
                        with open(filename, 'wb') as f:
                            f.write(response.body)
                    
                    
执行爬虫
        进入项目(ScrapySheel)的根目录,执行下列命令启动spider:

        scrapy crawl dmoz
        
        crawl dmoz 启动用于爬取 dmoz.org 的spider
        
        
可以在DOC命令中使用 scrapy shell "http:\\www.baidu.com" 后返回一个response,可以用response.xpath('//title')等方式来获取数据


可通过Selector的4个基本方法来获取数据
xpath()
css()
extrct()这个返回的是一个list
re()正则表达式


例:
返回对象 选择器    选择器类型     获取值(/text())  返回数据 
response.selector. xpath('//title/text()').       extract()

response.selector. css('title::text').            extract()
一般是不用加selector
 

https://www.imooc.com/article/13941

你可能感兴趣的:(python中的Scrapy框架使用)