美文网首页
【scrapy框架使用】scrapy框架使用

【scrapy框架使用】scrapy框架使用

作者: LuckTime | 来源:发表于2017-03-12 08:47 被阅读43次

    [TOC]
    参考文档:
    scrapy的使用 :http://python.jobbole.com/86405/
    pyc的理解 : http://blog.csdn.net/carolzhang8406/article/details/6342174,
    https://www.zhihu.com/question/30296617

    1.安装

    (因为scrapy 下层非常依赖 twisted,twisted 暂时在py3.0以上还不稳定。所以,python 3.0 以上不能完全兼容,建议使用2.7)

    pip install Scrapy
    

    2.创建第一个项目

    scrapy startproject firstscrapy(your_project_name)
    

    3.文件说明:

    scrapy.cfg  项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。(真正爬虫相关的配置信息在settings.py文件中)
    items.py    设置数据存储模板,用于结构化数据,如:Django的Model
    pipelines    数据处理行为,如:一般结构化的数据持久化
    settings.py 配置文件,如:递归的层数、并发数,延迟下载等
    spiders      爬虫目录,如:创建文件,编写爬虫规则
    *.pyc   是由py文件经过编译后二进制文件,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码。
    是由 python 的虚 拟机来执行的。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的 python是无法执行的。pyc文件也是可以反编译的,不同版本编译后的pyc文件是不同。
    注意:一般创建爬虫文件时,以网站域名命名
    

    4.测试项目

    在spiders目录下创建一个新爬虫文件  firstScrapy/spiders/xiaohua_spider.py
    创建新文件:xiaohua_spider.py
    
    import scrapy
    
    class XiaoHuarSpider(scrapy.spiders.Spider):
        name = "xiaohuar"
        #1.爬虫文件需要定义一个类,并继承scrapy.spiders.Spider
        #2.必须定义name,即爬虫名,如果没有name,会报错。
        #scrapy crawl xiaohuar --nolog
        #name 的string 必须和 crawl的 name 一致。否者报错
        
        allowed_domains = ["xiaohuar.com"]
        start_urls = [
            "http://www.xiaohuar.com/hua/",
        ]
    
        def parse(self, response):
            # print(response, type(response))
            # from scrapy.http.response.html import HtmlResponse
            # print(response.body_as_unicode())
    
            current_url = response.url #爬取时请求的url
            body = response.body  #返回的html
            unicode_body = response.body_as_unicode()#返回的html unicode编码
    
    
    

    5.运行

      scrapy crawl xiaohuar --nolog
     格式:scrapy crawl+爬虫名  –nolog即不显示日志
    



    (三个*,在makedown表示下划线)
    如果能简单运行,则继续下一步。

    6.scrapy查询语法:

    和beautifulsoup4 大多数语法还是相通的。

    当我们爬取大量的网页,如果自己写正则匹配,会很麻烦,也很浪费时间,令人欣慰的是,scrapy内部支持更简单的查询语法,帮助我们去html中查询我们需要的标签和标签内容以及标签属性。下面逐一进行介绍:
    查询子子孙孙中的某个标签(以div标签为例)://div
    查询儿子中的某个标签(以div标签为例):/div
    查询标签中带有某个class属性的标签://div[@class=’c1′]即子子孙孙中标签是div且class=‘c1’的标签
    查询标签中带有某个class=‘c1’并且自定义属性name=‘alex’的标签://div[@class=’c1′][@name=’alex’]
    查询某个标签的文本内容://div/span/text() 即查询子子孙孙中div下面的span标签中的文本内容
    查询某个属性的值(例如查询a标签的href属性)://a/@href
    
    完整例子:
    

    相关文章

      网友评论

          本文标题:【scrapy框架使用】scrapy框架使用

          本文链接:https://www.haomeiwen.com/subject/iiyruttx.html