第一个nodejs爬虫:爬取豆瓣电影图片

第一个nodejs爬虫:爬取豆瓣电影图片存入本地:

首先在命令行下 npm install request cheerio express -save;

代码:

var http = require(‘https‘); //使用https模块
var fs = require(‘fs‘);//文件读写
var cheerio = require(‘cheerio‘);//jquery写法获取所得页面dom元素
var request = require(‘request‘);//发送request请求
var i = 0;
var url = "https://movie.douban.com/subject/1889243/?from=subject-page";
//初始url
function fetchPage(x) { //封装一层函数,方便递归调用
    startRequest(x);
}

function startRequest(x) {
    //采用http模块向服务器发起一次get请求
    http.get(x, function(res) { //get到x网址,成功执行回调函数
        var html = ‘‘; //用来存储请求网页的整个html内容
        res.setEncoding(‘utf-8‘); //防止中文乱码
        //监听data事件,每次取一块数据
        res.on(‘data‘, function(chunk) {
            html += chunk;
        });
        //监听end事件,如果整个网页内容的html都获取完毕,就执行回调函数
        res.on(‘end‘, function() {
            var $ = cheerio.load(html); //采用cheerio模块解析html
            var news_item = {
                //获取电影的标题
                title: $(‘.related-info h2 i‘).text().trim(),
                //i是用来判断获取页数
                i: i = i + 1,

            };

            console.log(news_item); //打印新闻信息
            var news_title = $(‘.related-info h2 i‘).text().trim();

            savedContent($, news_title); //存储每篇文章的内容及文章标题

            savedImg($, news_title); //存储每篇文章的图片及图片标题

            //下一篇电影的url
            nextLink = $(".recommendations-bd dl:last-child dd a").attr(‘href‘);
            if(i <= 10) { //爬取10页
                fetchPage(nextLink);
            }
        });

    }).on(‘error‘, function(err) { //http模块的on data,on end ,on error事件
        console.log(err);
    });

}
//存储标题函数
function savedContent($, news_title) {
    $(‘#link-report span‘).each(function(index, item) {
        var x = $(this).text();
        x = x + ‘\n‘;
        //将新闻文本内容一段一段添加到/data文件夹下,并用新闻的标题来命名文件
        fs.appendFile(‘./data/‘ + news_title + ‘.txt‘, x, ‘utf-8‘, function(err) {
            if(err) {
                console.log(err);
            }
        });
    })
}
//该函数的作用:在本地存储所爬取到的图片资源
function savedImg($, news_title) {
    $(‘#mainpic img‘).each(function(index, item) {
        var img_title = $(‘#content h1 span‘).text().trim(); //获取图片的标题
        if(img_title.length > 35 || img_title == "") { //图片标题太长
            img_title = "Null";
        }
        var img_filename = img_title + ‘.jpg‘;
        var img_src = $(this).attr(‘src‘); //获取图片的url

        //采用request模块,向服务器发起一次请求,获取图片资源
        request.head(img_src, function(err, res, body) {
            if(err) {
                console.log(err);
            }
        });
        request(img_src).pipe(fs.createWriteStream(‘./image/‘ + news_title + ‘---‘ + img_filename));
        //通过流的方式,把图片写到本地/image目录下,并用标题和图片的标题作为图片的名称。
    })
}
fetchPage(url); //主程序开始运行
时间: 2024-10-06 23:32:49

第一个nodejs爬虫:爬取豆瓣电影图片的相关文章

用Scrapy爬虫爬取豆瓣电影排行榜数据,存储到Mongodb数据库

爬虫第一步:新建项目 选择合适的位置,执行命令:scrapy startproje xxxx(我的项目名:douban) 爬虫第二步:明确目标 豆瓣电影排行url:https://movie.douban.com/top250?start=0, 分析url后发现srart=后面的数字,以25的步长递增,最大为225,所以可以利用这个条件来发Request请求 本文只取了三个字段,电影名.评分和介绍,当然你想去更多信息也是可以的 item["name"]:电影名 item["r

Python爬虫爬取豆瓣电影名称和链接,分别存入txt,excel和数据库

前提条件是python操作excel和数据库的环境配置是完整的,这个需要在python中安装导入相关依赖包: 实现的具体代码如下: #!/usr/bin/python# -*- coding: utf-8 -*- import urllibimport urllib2import sysimport reimport sslimport openpyxlimport MySQLdbimport time #from bs4 import BeautifulSoup #修改系统默认编码为utf-8

python爬虫爬取豆瓣电影前250名电影及评分(requests+pyquery)

写了两个版本: 1.面向过程版本: import requests from pyquery import PyQuery as pq url='https://movie.douban.com/top250' moves=[] def sec(item): return item[1] for i in range(0,255,25): content=requests.get(url+"?start="+str(i))#?start=25 for movie in pq(conte

运维学python之爬虫高级篇(五)scrapy爬取豆瓣电影TOP250

对于scrapy我们前面已经介绍了简单的应用,今天我们用一个完整的例子,爬取豆瓣电影TOP250来做一个小的练习,把scrapy阶段做一个总结. 1 环境配置 语言:Python 3.6.1 IDE: Pycharm 浏览器:firefox 爬虫框架:Scrapy 1.5.0 操作系统:Windows 10 家庭中文版 2 爬取前分析 2.1 需要保存的数据 首先确定我们要获取的内容,在items中定义字段,来将非结构化数据生成结构化数据,获取的内容主要包括:排名.电影名称.得分.评论人数.如下

Python开发简单爬虫之静态网页抓取篇:爬取“豆瓣电影 Top 250”电影数据

目标:爬取豆瓣电影TOP250的所有电影名称,网址为:https://movie.douban.com/top250 1)确定目标网站的请求头: 打开目标网站,在网页空白处点击鼠标右键,选择"检查".(小编使用的是谷歌浏览器). 点击"network",在弹出页面若长时间没有数据显示,则试一下F5刷新. 可以得到目标网页中Host和User-Agent两项. 2)找到爬取目标数据(即电影名称)在页面中的位置 右键"检查",选择"Elem

Python爬虫入门 | 爬取豆瓣电影信息

这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬虫的大门啦~好啦,正式开始我们的第二节课<爬取豆瓣电影信息>吧!啦啦哩啦啦,都看黑板~1. 爬虫原理1.1 爬虫基本原理听了那么多的爬虫,到底什么是爬虫?爬虫又是如何工作的呢?我们先从"爬虫原理"说起.爬虫又称为网页蜘蛛,是一种程序或脚本.但重点在于:它能够按照一定的规则,自动

团队-爬取豆瓣电影Top250-项目总结

团队名称:极限定理 项目名称:爬取豆瓣电影Top250 组长:邵文强 成员:张晓亮.潘新宇.邵翰庆.宁培强.李国峰 关于功能:我们所做的是一个能够爬取豆瓣电影网的前250的排名程序,针对电影类别查询,统计,整合. 需求分析阶段:这个只是一个很小的程序,目的是为了帮助一部分懒人,当他们想找一下好看的电影的时候,又不想通过打开网页来一个一个翻,可以通过使用我们所做的一个小的程序很快爬取到前250的电影供参考,而且还有影片介绍等等可以进一步了解影片,可以供参考. 软件设计阶段: 分析设计:需求分析,项

03_使用scrapy框架爬取豆瓣电影TOP250

前言: 本次项目是使用scrapy框架,爬取豆瓣电影TOP250的相关信息.其中涉及到代理IP,随机UA代理,最后将得到的数据保存到mongoDB中.本次爬取的内容实则不难.主要是熟悉scrapy相关命令以及理解框架各部分的作用. 1.本次目标 爬取豆瓣电影TOP250的信息,将得到的数据保存到mongoDB中. 2.准备工作 需要安装好scrapy以及mongoDB,安装步骤这里不做赘述.(这里最好是先了解scrapy框架各个部分的基本作用和基础知识,这样方便后面的内容的理解.scrapy文档

【转】爬取豆瓣电影top250提取电影分类进行数据分析

一.爬取网页,获取需要内容 我们今天要爬取的是豆瓣电影top250页面如下所示: 我们需要的是里面的电影分类,通过查看源代码观察可以分析出我们需要的东西.直接进入主题吧! 知道我们需要的内容在哪里了,接下来就使用我们python强大的request库先获取网页内容下来吧!获取内容后,再使用一个好用的lxml库来分析网页内容,然后获取我们的内容就可以做下一步操作了.先贴出使用request库和lxml分析的代码 1 def get_page(i): 2 url = 'https://movie.d