资讯专栏INFORMATION COLUMN

scrapy爬取豆瓣Top250电影

codergarden / 645人阅读

摘要:这次我们爬取的内容准备步骤找到格式网页中需要爬取的数据的例如我们需要爬取图片的这里用的是不会用的同学请百度然后我们开始建立工程打开然后在你想要建立工程的目录下面输入就会自动建立一个工程然后去根目录建立一个去这个目录里建立一个注意这里的主爬虫

这次我们爬取的内容

准备步骤

找到html格式网页中需要爬取的数据的xpath
例如我们需要爬取图片的url



这里用的是xPath Checker不会用的同学请百度

2.然后我们开始建立工程 打开cmd 然后在你想要建立工程的目录下面 输入 scrapy startproject douban
就会自动建立一个工程 然后去根目录建立一个run.py 去spiders这个目录里建立一个douban_spiders.py(注意这里的主爬虫文件和项目名称不能相同 不然会报错)

源码
# run.py
from scrapy import cmdline
cmdline.execute("scrapy crawl douban".split())
# douban_spiders.py
#coding:utf-8  
import scrapy  
from douban.items import DoubanItem  
   
from scrapy.crawler import CrawlerProcess  
   
class doubanSpider(scrapy.Spider):  
    name = "douban"  
    allowed_domains = ["douban.com"]  
    start_urls = ["https://movie.douban.com/top250"]  
       
    def parse(self, response):  
        item = DoubanItem()  
        item["image_urls"] = response.xpath("//div[@class="pic"]//img//@src").extract()#提取图片链接  
        # print "image_urls",item["image_urls"]  
        item["title"] = response.xpath("//div[@class="hd"]/a/span[1]/text()").extract()#提取电影标题 
        # print "title",item["title"]  
        item["quote"] = response.xpath("//p[@class="quote"]/span/text()").extract()#提取简介
        # print "quote",item["quote"]  
        item["level"] = response.xpath("//em/text()").extract()#提取排名
        # print "level",item["level"]  
        yield item    
        new_url= "https://movie.douban.com/top250" + response.xpath("//span[@class="next"]/link/@href").extract_first()#翻页  
        # print "new_url",new_url  
        if new_url:  
            yield scrapy.Request(new_url,callback=self.parse)  
# items.py
import scrapy

class DoubanItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    image_urls = scrapy.Field()
    title = scrapy.Field()
    quote = scrapy.Field()
    level = scrapy.Field()
# pipelines.py
import os  
import urllib 

from douban import settings  

class DoubanPipeline(object):
    def process_item(self, item, spider):  
        i = 0
        dir_path = "%s/%s"%(settings.IMAGES_STORE,spider.name)#存储路径  
        print "dir_path",dir_path  
        if not os.path.exists(dir_path):  
            os.makedirs(dir_path)  
        for image_url in item["image_urls"]:  
            file_name = "Top" + item["level"][i] + " " +item["title"][i] + "("+item["quote"][i]+ ").jpg"#图片名称  
            i = i + 1
            # print "filename",file_name  
            file_path = "%s/%s"%(dir_path,file_name)  
            # print "file_path",file_path  
            if os.path.exists(file_name):  
                continue  
            with open(file_path,"wb") as file_writer:  
                conn = urllib.urlopen(image_url)#下载图片  
                file_writer.write(conn.read())  
            file_writer.close()  
        return item  
# setting.py
BOT_NAME = "douban"

SPIDER_MODULES = ["douban.spiders"]
NEWSPIDER_MODULE = "douban.spiders"

ITEM_PIPELINES = {  
   "douban.pipelines.DoubanPipeline": 1,  
}  
IMAGES_STORE="E:"  
DOWNLOAD_DELAY = 0.25

USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.54 Safari/536.5"  
最终爬取的结果

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40688.html

相关文章

  • scrapy入门教程——爬取豆瓣电影Top250

    摘要:注意爬豆爬一定要加入选项,因为只要解析到网站的有,就会自动进行过滤处理,把处理结果分配到相应的类别,但偏偏豆瓣里面的为空不需要分配,所以一定要关掉这个选项。 本课只针对python3环境下的Scrapy版本(即scrapy1.3+) 选取什么网站来爬取呢? 对于歪果人,上手练scrapy爬虫的网站一般是官方练手网站 http://quotes.toscrape.com 我们中国人,当然...

    senntyou 评论0 收藏0
  • scrapy入门:豆瓣电影top250爬取

    摘要:本文内容爬取豆瓣电影页面内容,字段包含排名,片名,导演,一句话描述有的为空,评分,评价人数,上映时间,上映国家,类别抓取数据存储介绍爬虫框架教程一入门创建项目创建爬虫注意,爬虫名不能和项目名一样应对反爬策略的配置打开文件,将修改为。 本文内容 爬取豆瓣电影Top250页面内容,字段包含:排名,片名,导演,一句话描述 有的为空,评分,评价人数,上映时间,上映国家,类别 抓取数据存储 ...

    xialong 评论0 收藏0
  • Python爬虫 - scrapy - 爬取豆瓣电影TOP250

    摘要:前言新接触爬虫,经过一段时间的实践,写了几个简单爬虫,爬取豆瓣电影的爬虫例子网上有很多,但都很简单,大部分只介绍了请求页面和解析部分,对于新手而言,我希望能够有一个比较全面的实例。 0.前言 新接触爬虫,经过一段时间的实践,写了几个简单爬虫,爬取豆瓣电影的爬虫例子网上有很多,但都很简单,大部分只介绍了请求页面和解析部分,对于新手而言,我希望能够有一个比较全面的实例。所以找了很多实例和文...

    WalkerXu 评论0 收藏0
  • Java爬虫之下载IMDB中Top250电影的图片

    摘要:介绍在博客爬虫爬取豆瓣电影图片中我们利用的爬虫框架,将豆瓣电影图片下载到自己电脑上。那么,在的爬虫的也可以下载图片吗答案当然是肯定的在本次分享中,我们将利用的包和函数来实现图片的下载。 介绍   在博客:Scrapy爬虫(4)爬取豆瓣电影Top250图片中我们利用Python的爬虫框架Scrapy,将豆瓣电影Top250图片下载到自己电脑上。那么,在Java的爬虫的也可以下载图片吗?答...

    tianren124 评论0 收藏0
  • Python爬虫之多线程下载豆瓣Top250电影图片

    摘要:本次爬虫项目将会用到模块中的类,多线程豆瓣电影图片。总结通过上述两个爬虫程序的对比,我们不难发现,同样是下载豆瓣电影,个网页中的图片,在没有使用多线程的情况下,总共耗时约,而在使用多线程个线程的情况下,总共耗时约秒,效率整整提高了约倍。 爬虫项目介绍   本次爬虫项目将爬取豆瓣Top250电影的图片,其网址为:https://movie.douban.com/top250, 具体页面如...

    shiyang6017 评论0 收藏0

发表评论

0条评论

codergarden

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<