3-04.简易爬虫

简易爬虫

  • 作用:通过后端语言爬取网站中的数据,然后通过特定模块进行数据清洗,最后将数据输出给前端。

  • 反爬虫

  • 解决: 给a标签的内容中放一张图片

  • 步骤

    1.引入http模块

    const http = require( 'http' )    

2.复制node.js官网,http.get()

3.复制node.js官网,const options() 放在http.get()上面

4.将http.get()中的路径换成 options注意这不是字符串,所以不用单引号。

5.找到要爬取的网站,在控制台的Network中找到Doc,然后刷新会有一个文件夹,文件夹内就是要的数据;点击最左边的Headers,下拉找到General中的Request URL,复制其中的URL。

6.在options对象中修改信息,hostname就是域名(不带http和结尾斜杠的纯域名),path就是com/后面的路径,如果没有就留空,method为GET请求,因为是http.get(),上下文要一致,headers复制Acc开头的控制台中整个Request Headers代码添加到里面,最后的content-length值改成0;

并将:后面的值加上单引号,后面加逗号。:前面的带-横杠的也加上单引号。

7.查看控制台数据类型,如果是text类型的,要删除报错程序。(let reeor至return部分)

8.删除try中的josn处理程序,换成consolelog(rawData)

*9如果请求的网站是https协议的,所有http代码都要换成https,端口号改成443,option里的headers要改成header;

10.输入ls查看文件目录,输入命令:node+空格+文件名 运行,会得到一段数据。

11.接下来进行数据清洗获得想要的数据 用第三方插件【模块】 cheerio

12.先npm init -y 出现package.js文件用于记录项目依赖

13.cnpm i cheerio -S

14.引入模块

const cheerio = require( 'cheerio' )

15.在try中引入代码,并删除console.log(rawData)

const $ = cheerio.load( rawData )
$('标签.类名 a').each( function ( item ) {
       console.log( $( this ).text()  )
      })
  1. const req=http.get() 给模块定义一个常量

  2. req.end() 再最后添加

  3. 利用原生代码创建一个服务器,参考04.原生代码创造服务器;
  4. 将从头开始至http.get之前的代码复制粘贴到原生服务器上层函数前,并把重复的变量删除。
  5. 把剩下的http.get的部分复制粘贴替换掉原生服务器的response.write(),response.end()语句。
  6. 将console.log( $( this ).text() ) 替换成 response.write( <h3> ${ $( this ).text() } </h3> )
  7. 在在函数下加上response.end()
  8. 运行文件即可在页面输出爬到的数据

猜你喜欢

转载自www.cnblogs.com/douyacai7822/p/11353407.html