node.js簡單爬蟲

這里假設你已經安裝好node.js和npm,如果沒有安裝,請參閱其他教程安裝。

  • 配置
    首先是來配置package.json文件,這里使用express,request和cheerio。

package.json如下:

{"name": "node-scrape","version": "0.0.1","description": "Scrape","main": "server.js","dependencies": {"express" : "latest","request" : "latest","cheerio" : "latest"}
}
  • npm 安裝
    把package.json文件放到一個你自己定義的文件夾(nodejs_scrape)下,然后在命令行下執行

cd nodejs_scrape
npm install
  • 抓取內容
    在nodejs_scrape目錄下新建一個server.js文件,先定義如下變量的和方法

var express = require('express');
var fs = require('fs');
var request = require('request');
var cheerio = require('cheerio');
var app = express();app.get('/',function (req,res) {//抓取內容的方法
});app.listen('8081'); //使用8081端口console.log('Magic happens on port 8081');exports = module.exports = app;

下面我們就來完善get方法的內容
首先定義要抓取的url,這里以segmentfault為例

url  = 'https://segmentfault.com/news';

頁面如下面所示,點擊F12查看,我們就提取最簡單的 class="mr10" 這個標簽
圖片描述

抓取內容的方法如下

 request(url, function (err,res,html) {if (!err){ var $ = cheerio.load(html);var title;$('.mr10').filter(function () {var data = $(this);title = data.text(); //獲取標簽的內容console.log('title is ' + title); //控制臺打印});}});

server.js完整代碼如下

/*** Created by Administrator on 2017/3/1.*/
var express = require('express');
var fs = require('fs');
var request = require('request');
var cheerio = require('cheerio');
var app = express();app.get('/',function (req,res) {//all scrape magic will happen hereurl  = 'https://segmentfault.com/news';request(url, function (err,res,html) {if (!err){var $ = cheerio.load(html);var title;$('.mr10').filter(function () {var data = $(this);title = data.text();console.log('title is ' + title);});}});});app.listen('8081');console.log('Magic happens on port 8081');exports = module.exports = app;
  • 運行
    在nodejs_scrape目錄下運行 node server ,可以看到如下所示

圖片描述

在瀏覽器運行http://127.0.0.1:8081/,可以看到抓取的內容如下:

抓取的標題

這樣我們就完成了一個簡單到不能再簡單的node.js爬蟲。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457084.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457084.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457084.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Day11-遞歸性能測試

import time time.clock() sum 0 for i in range (1000000000):sumi print(time.clock()) 慎用 慎用 慎用

關于在新建的package中用SetContentView()函數時無法找到已創建的R.layout的布局文件的的問題的解決辦法

問題描述如下: 解決途徑:是在導入包的過程中,錯誤的將系統自動將Android.R這個包導入最終導致用setContenView()加載布局時只能顯示系統自帶的布局,無法顯示自己已經創建的布局。只需將相應活動中導入的Android.R包刪除&#xff0…

Struts2入門(二)——配置攔截器

一、前言 之前便了解過,Struts 2的核心控制器是一個Filter過濾器,負責攔截所有的用戶請求,當用戶請求發送過來時,會去檢測struts.xml是否存在這個action,如果存在,服務器便會自動幫我們跳轉到指定的處理類中…

linux固態機械分區嗎,不再疑惑!實測數據后才知道固態硬盤究竟要不要分區

不再疑惑!實測數據后才知道固態硬盤究竟要不要分區2019-12-10 20:52:00162點贊594收藏177評論前幾年的固態硬盤價格昂貴,一般用戶會選擇128G或256G的固態作為系統盤,由于單盤空間不大,一般都會配合機械硬盤使用,無需考…

關于無法加載已創建的布局文件的問題的解決方案以及已布局在對應的R文件中未生成相應ID的問題的解決

先來說下創建后的Layout布局文件在對應的R文件中不能生成相應的ID問題,一般情況下之所以出現這種問題是應為自己的res文件中有錯誤的文件:對應的是錯誤的文件格式名稱,以及錯誤的文件內容等。博主就遇到過為drawable文件起了一個非法的名稱&a…

安卓手機的后門控制工具SPADE

SPADE,一款安卓手機的后門控制工具,安全研究人員可以以此了解和研究安卓后門原理。 首先,我們從網站www.apk4fun.com下載apk文件,如ccleaner。然后,我們安裝spade git clone https://github.com/suraj-root/spade.git …

Day12-date time

import datetimedatetime比time高級了不少,可以理解為datetime基于time進行了封裝,提供了, 更為實用的函數,并且datetime模塊的接口更直觀更容易調用模塊中的類: datetime 同時又時間和日期 imedelta 主…

MySQL案例-open too many files,MyISAM與partition

-------------------------------------------------------------------------------------------------短文---------------------------------------------------------------------------------------------------------------長話短說~現象: error log中批量刷錯誤日志, 形…

關于異常:HttpURLConnectionImpl cannot be cast to javax.net.ssl.HttpsURLConnection的解決辦法

<span style"font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><span style"font-size:18px;">今天在寫一個app時&#xff0c;當實現從網絡上獲取圖片資源&#xff0c;發送HTTPURLConnection的時候拋出這樣…

linux網卡有很多error,教你設置win7系統虛擬機安裝linux提示network error的解決方法...

很多朋友在使用電腦的過程中&#xff0c;會發現win7系統虛擬機安裝linux提示network error的現象&#xff0c;當遇到win7系統虛擬機安裝linux提示network error的問題&#xff0c;我們要怎么解決呢&#xff1f;如今還有很多用戶不知道如何處理win7系統虛擬機安裝linux提示netwo…

codevs2171 棋盤覆蓋

題目描述 Description給出一張n*n(n<100)的國際象棋棋盤&#xff0c;其中被刪除了一些點&#xff0c;問可以使用多少1*2的多米諾骨牌進行掩蓋。 輸入描述 Input Description第一行為n&#xff0c;m&#xff08;表示有m個刪除的格子&#xff09;第二行到m1行為x,y&#xff0c…

Day13-日歷模塊

import calendar日歷模塊 #使用#返回制定歿年某月日歷 print(calendar.month(2019,3)) #返回指定年份的日歷 print(calendar.calendar(2019)) #判斷閏年返回True 或者Flase print(calendar.isleap(2000)) #返回某個月的weekd的第一天和這個月所有的天數 print(calendar.monthra…

關于eclipse項目紅色感嘆號的解決辦法

在網上找到了解決辦法&#xff0c;詳見&#xff1a;http://jingyan.baidu.com/article/ea24bc3986f7b0da62b33188.html

linux模擬網絡延遲,使用Nistnet搭建網絡延遲模擬設備 (network delay simulator)

mknod /dev/hitbox c 62 0mknod /dev/nistnet c 62 1chown root /dev/hitboxchown root /dev/nistnetmknod /dev/mungebox c 63 0chown root /dev/mungeboxmknod /dev/spybox c 64 0chown root /dev/spyboxmodprobe nistnet可以將這個放到/etc/rc.local中&#xff0c;以便重啟后…

MyBatis - MyBatis Generator 生成的example 如何使用 and or 簡單混合查詢

簡單介紹&#xff1a; Criteria&#xff0c;包含一個Cretiron的集合,每一個Criteria對象內包含的Cretiron之間是由AND連接的,是邏輯與的關系。oredCriteria&#xff0c;Example內有一個成員叫oredCriteria,是Criteria的集合,就想其名字所預示的一樣&#xff0c;這個集合中的Cri…

將本地Blog部署到GitHub上,有自己的博客頁面!

前言 上一篇文章我們已經把本地的hexo環境搭建好了&#xff0c;并且在本地成功預覽&#xff0c;但是本地預覽也意味著自己的博文只能自己看的到&#xff0c;其他人根本看不到&#xff0c;這篇文章將接上文說一說如何把本地Blog部署到GitHub上&#xff0c;好讓小伙伴可以來訪問我…

Linux下安裝配置JDK

本人使用的VM虛擬機&#xff0c;在VM上安裝了Linux&#xff0c;版本是CentOS-6.7-i386-bin-DVD1.iso。 一、下載JDK 在進入JDK官網&#xff0c;找到要下載的JDK版本&#xff0c;將下載地址復制下來&#xff0c;放到迅雷中下載&#xff0c;我下載的是&#xff1a;http://downloa…

新手使用GitHub客戶端提交項目的步驟

1.下載https://windows.github.com/ github客戶端 2.安裝完github&#xff0c;會出現 點擊GitHub&#xff0c;Git Shell是命令行指令&#xff0c;暫時用不上 3.點擊進入之后 輸入你在https://github.com上面注冊的用戶名和密碼點擊log in 4.登錄之后新建項目 點擊左上角…

linux的命令uname n,Linux下uname命令及其選項

Linux下uname命令及其選項2017-03-15 23:22:26曉得了Linux系統的用戶信息后&#xff0c;你也可能想曉得所登錄的系統信息&#xff0c;今日就紹介獲取系統本身信息的命令uname,這搭u應當是UNIX的縮寫&#xff0c;操作如次&#xff1a;uname使役uname還可以得到其它相關系統的信息…