js 爬虫抓取网页数据(Python中的Node.js与爬虫的框架与资料分析)

优采云 发布时间: 2021-12-15 23:27

  js 爬虫抓取网页数据(Python中的Node.js与爬虫的框架与资料分析)

  每当我看到爬虫或百度爬虫时,它都是Python爬虫。不得不说,爬虫的框架和材料基本上都是Python最多的,但事情要反过来。Python爬虫有几个问题:

  1.Python好像对DOM的支持不是很好,网页的DOM处理也不是很好

  2.Python对网页编码的处理。

  3.最重要的是Python需要多线程。

  以上问题都是我们即将使用的Node.js的优点!同样,Node.js 也有缺点。Node.js是单线异步的,很容易导致发起爬取请求的顺序和返回结果的顺序不一致。因此,我们需要添加请求序列号,然后将处理后的序列号重新排序,以实现结果和请求。一致。另外Node.js毕竟是前端,数据的处理比那个差很多,但是作为网站的数据爬取绝对够用。废话不多说,我们进入Node.js爬虫,Node.js爬虫步骤1.创建项目目录,不管你在哪里创建,但是路径最好不要有中文,谁知道会不会出错。比如我们的项目路径是:E:

  E:cd E:\adt-bundle-windows-x86_64-20131030\Nodejs\nests_Datagetnpm init

  npm init 是在当前目录下创建一个模块(即生成package.json),其文件属性描述如下。输入npm init后,会依次出现如下查询

  $ npm initThis utility will walk you through creating a package.json file.It only covers the most common items, and tries to guess sensible defaults.See `npm help json` for definitive documentation on these fieldsand exactly what they do.Use `npm install --save` afterwards to install a package andsave it as a dependency in the package.json file.Press ^C at any time to quit.name: (node_modules) runoob # 模块名version: (1.0.0) #模块版本description: Node.js 测试模块(www.runoob.com) # 描述entry point: (index.js)test command: make testgit repository: https://github.com/runoob/runoob.git # Github 地址keywords: #关键字author: #作者license: (ISC) #许可类型About to write to ……/node_modules/package.json: # 生成地址{ "name": "runoob", "version": "1.0.0", "description": "Node.js 测试模块(www.runoob.com)", ……}Is this ok? (yes) yes

  您可以根据自己的情况填写以上信息。信息填错没关系,我们可以随时通过package.json修改。3.安装请求和cheerio依赖的安装命令如下

  npm install request --savenpm install cheerio

  界面如下

  

  

  4.接下来我们终于可以开始操作我们的js代码,新建一个js文件了。如果是主入口文件名,应该与package.json中的入口点一致。这里我们新建一个名为server.js的文件来建立依赖引用,代码如下

  var request = require("request");var cheerio = require("cheerio");

  接下来,我们将抓取百度首页链接为:

  request('https://www.baidu.com/',function(err,result){ if(err){ console.log("错误:"+err); return; } console.log(result.body);})

  在cmd中输入node server.js,回车,代码没有输入错误会出现如下界面

  

  可以看出,我们已经获取到了网页的数据,我们已经迈出了重要的第一步。只要我们能得到完整的Html网页源代码,就很容易做到了。现在是数据处理。我们不是还有一个我们以前没有使用过的库吗?没错,就是cheerio库的使用。现在我们修改上面的代码,将成功获取的网页交给cheerio处理。至于如何通过DOM提取数据,我们通过UC浏览器访问,按F12进入开发者模式。对比一下我们要抓取的信息的位置,比如这里我们要抓取百度的标题

  下一步是编写捕获的 DOM 语句。我不知道如何使用它。有DOM文档和JQuery文档。这里我们要获取标题的DOM是$('title').text(),所以代码改成如下:

  //把 html 装载到 cheerio 中 var $ = cheerio.load(result.body); //通过 DOM 抓取网页数据 console.log($('title').text());

  影响:

  

  但是现在我们抓取的是静态页面,不像百度首页上的新闻我们获取不到。在下一篇文章中,我们将学习抓取动态页面。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线