Spider Scrapy 框架爬虫

scrapy 是一款常用的爬虫框架,可以实现分布式爬虫和高性能的爬虫

scrapy 框架的创建实在cmd命令行下进行的:

  首先要在命令行下转到你要创建的文件夹下:

  cd 目标文件夹路径 创建的是一个工程

  创建命令:

  scrapy startproject  工程名称 (自己随意)

  创建完工程后要进入到工程文件夹下,穿件爬虫(spider)文件

  创建爬虫文件:

  scrapy genspider 爬虫文件名  目标url(初始的URL必须要有)

 红色部分是自己加的代码,解析数据的,其他的都是创建完成后的原始代码

import scrapy


class QiubaiSpider(scrapy.Spider):
    name = 'qiubai'
    #allowed_domains = ['www.qiushibaike.com/text']  # 这一行推荐注释掉,因为后面如果你有需要根据解析的URL再次进行爬取的时候,可能会出问题。 表示的是域名范围,在这个域名下的URL才可以爬取,不是不能被爬取。
    start_urls = ['https://www.qiushibaike.com/text/']  # 这个URL是可以的,https://www.baidu.com 这个URL九不能被爬取的,因为上面的限制,但是上面也可以加多个域名

    def parse(self, response):
        # 建议使用想path进行内容解析,scrapy已经集成了xpath接口
        div_list = response.xpath('//div [@id="content-left"]/div') # xpath表达式 //div表示所有div [@id="content-left"] div的ID
     data_list = [] for div in div_list: # .extract() 可以将xpath返回的selector对象中的值取出 xpath返回的是一个列表,列表中的元素是selector对象 # author = div.xpath('./div/a[2]/h2/text()').extract() # xpath表达式./表示的是在当前的div下 a[2] 表示这个div下的第二个a标签 author = div.xpath('./div/a[2]/h2/text()').extract_first() # .extract_first() == extract()[0] content = div.xpath('.//div[@class="content"]/span/text()').extract()
       
       # 将解析到的作者和内容数据封装到字典中,然后再将字典追加到列表中,parse只能返回可迭代类型或者是空
       dict = {
          ”author“: author,
          "content": content
        }
        data_list.append(dict)
return data_list

接下来需要改一下配置文件(sttings.py)这个文件也是创建完工程后就有的,在里面改一下第19号,user_agent 请求头信息 和 22行 ROBOTSTXT_OBEY 改成 False

最后就是运行了,运行也是需要在cmd命令行下进行运行

  运行命令:

  scrapy  crawl 爬虫文件名 --nolog       # --nolog是表示不打印任何的日志

  scrapy crawl 爬虫文件名 -o 磁盘文件名.后缀  -o 表示将返回的可迭代类型的数据写入指定的文件中  (操作后写入csv文件结果出现乱码,暂时不知道是什么原因)

posted @ 2019-02-19 15:00  微雨丶  阅读(133)  评论(0编辑  收藏  举报