python scrapy框架爬取豆瓣top250电影篇一明确目标&&爬虫编写

##1.明确目标
1.1在url上找到要爬取的信息
这里写图片描述
1.2.确定了信息,编写items文件

  1.    class DoubanItem(scrapy.Item):
  2.     # define the fields for your item here like:
  3.     # name = scrapy.Field()
  4.         serial_number = scrapy.Field()
  5.         movie_name = scrapy.Field()
  6.         introduce = scrapy.Field()
  7.         star = scrapy.Field()
  8.         evaluate = scrapy.Field()
  9.         describe = scrapy.Field()
    ##2.spider编写 ![这里写图片描述](https://img-blog.csdn.net/20180909151002615?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ljaGdsYXViZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
    1. class DoubanSpiderSpider(scrapy.Spider):
    2.       name = 'douban_spider'
    3.       allowed_domains = ['movie.douban.com']
    4.       start_urls = ['https://movie.douban.com/top250']
    1. **print 是测试 看是否能够打印出信息** **2.1user agent在settings中开启**
    • 在网页中抓取 user agent 并写到settings中去
      这里写图片描述
    • 写到setting中
      这里写图片描述
      2.2创建main文件 并且执行 测试是否爬取信息
    from scrapy import cmdline
    
    cmdline.execute('scrapy crawl douban_spider'.split())
    

    这里写图片描述

    2.3spider里面的parse通过写xpath进行解析
    xpath教程
    点击具体的名称 右击检查 即可看到位置 下载xpath插件 可以匹配到对应的位置
    这里写图片描述

    这里写图片描述

    进入spider写对应的结果
    这里写图片描述
    这里写图片描述
    可以测试 print(douban_item)查看是否能够下载进去

      • def parse(self, response):
      •     movie_list=response.xpath("//div[@class='article']//ol[@class='grid_view']/li");
      •     for i_item in movie_list:
      •       douban_item = DoubanItem()
      •       douban_item['serial_number']=i_item.xpath(".//div[@class='item']//em//text()").extract_first()
      •       douban_item['movie_name']=i_item.xpath(".//div[@class='hd']//a//span[1]/text()").extract_first()
      •       content=i_item.xpath(".//div[@class='bd']//p[1]/text()").extract()
      •       for i_content in content:
      •         content_s = "".join(i_content.split())
      •         douban_item['introduce'] = content_s
      •       douban_item['star'] = i_item.xpath(".//div[@class='star']//span[2]/text()").extract_first()
      •       douban_item['evaluate'] = i_item.xpath(".//div[@class='star']//span[4]/text()").extract_first()
      •       douban_item['describe'] = i_item.xpath(".//p[@class='quote']//span[1]/text()").extract_first()
      •       yield douban_item
      •        #链接下一页
      •       next_link = response.xpath("//span[@class='next']/link/@href").extract()
      •       if (next_link):
      •         next_link = next_link[0]
      •         #传给调度器
      •         yield scrapy.Request("https://movie.douban.com/top250"+next_link,callback=self.parse)
      •       pass
        1. ##(注意)对于内容有多行的(content) 就需要特殊处理 处理完后记得要```yield```将其发给pipeline ![这里写图片描述](https://img-blog.csdn.net/20180909153438720?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ljaGdsYXViZW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

        ##解析下一页
        自动检索下一页
        这里写图片描述

        #链接下一页
                next_link = response.xpath("//span[@class='next']/link/@href").extract()
                if next_link:
                    next_link = next_link[0]
                    #传给调度器
                    yield scrapy.Request("https://movie.douban.com/top250"+next_link,callback=self.parse)
        

        ##将数据保存到json或者csv格式

        scrapy crawl douban_spider -o douban.json
        scrapy crawl douban_spider -o douban.csv
        
      • 0
        点赞
      • 0
        收藏
        觉得还不错? 一键收藏
      • 0
        评论

      “相关推荐”对你有帮助么?

      • 非常没帮助
      • 没帮助
      • 一般
      • 有帮助
      • 非常有帮助
      提交
      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值