簡體   English   中英

在 node.js 中抓取經過身份驗證的網站

[英]Scraping authenticated website in node.js

我想用 node.js 抓取我的大學網站 (moodle),但我還沒有找到能夠做到這一點的無頭瀏覽器。 我使用 RoboBrowser 僅用 10 行代碼在 python 中完成了它:

from robobrowser import RoboBrowser
url = "https://cas.upc.edu/login?service=https%3A%2F%2Fatenea.upc.edu%2Fmoodle%2Flogin%2Findex.php%3FauthCAS%3DCAS"
browser = RoboBrowser()
browser.open(url)
form = browser.get_form()
form['username'] = 'myUserName'
form['password'] = 'myPassword'
browser.submit_form(form)
browser.open("http://atenea.upc.edu/moodle/")
print browser.parsed

問題是該網站需要身份驗證。 你能幫助我嗎? 謝謝!

PD:我認為這很有用https://www.npmjs.com/package/form-scraper但我無法讓它工作。

假設您想閱讀第 3 方網站,並“抓取”特定信息,您可以使用Cheerio等庫在Node.js中實現這一點。

Cheerio 是“專為服務器設計的核心 jQuery 的精益實現” 這意味着給定 DOM(或其一部分)的 String 表示,cheerio 可以像 jQuery 一樣遍歷它。

Max Ogden 的一個示例展示了如何使用request模塊從遠程服務器獲取 HTML,然后將其傳遞給cheerio

var $ = require('cheerio')
var request = require('request')

function gotHTML(err, resp, html) {
  if (err) return console.error(err)
  var parsedHTML = $.load(html)
  // get all img tags and loop over them
  var imageURLs = []
  parsedHTML('a').map(function(i, link) {
    var href = $(link).attr('href')
    if (!href.match('.png')) return
    imageURLs.push(domain + href)
  })
}

var domain = 'http://substack.net/images/'
request(domain, gotHTML)

Selenium支持多種語言、多種平台和多種瀏覽器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM