簡體   English   中英

使用Java進行網頁爬取?

[英]Web Scraping with Javascript?

我很難弄清楚如何抓取此網頁 ,以便將該婚禮清單添加到我的onepager中。 乍一看似乎並不復雜,但是當我進入代碼時,我只是無法獲得任何結果。

我已經嘗試過ygrab.js ,它非常簡單,可以將我帶到某個地方,但是隨后我似乎無法刮取圖像,並且它僅在控制台中打印輸出(沒有很多文檔可以繼續)。

$(function() {
var $listResult = $('#list-result');
var kado = [];
var data = [
{
    url: 'https://www.kadolog.com/fr/list/liste-de-mariage-laura-julien',
    selector: '.kado-not-full',
    loop: true,
    result: [{
              name: 'photo', 
              find: '.views-field-field-photo',
              grab: {
                by: 'attr',
                value: 'src'
              }
             },
            {
            name: 'title',
            find: '.views-field-title .field-content',
            grab: {
                by: 'text',
                value: ''
            }
        },
        {
            name: 'description',
            find: '.views-field-body .field-content',
            grab: {
                by: 'text',
                value: ''
            }
        },
        {
            name: 'price',
            find: '.price',
            grab: {
                by: 'text',
                value: ''
            }
        },
        {
            name: 'remaining',
            find: '.topinfo',
            grab: {
                by: 'text',
                value: ''
            }
        },
        {
            name: 'link',
            find: '.views-field-nothing .field-content .btn',
            grab: {
                by: 'attr',
                value: 'href'
            }
        },
    ],
  },
];
ygrab(data, function(result){
 console.log(JSON.stringify(result, null, 2)); //photos = undefined
});

然后是帶有Request和Cheerio的Node.js(我也嘗試過Crawler),但是我不知道節點如何工作。

var request = require("request");

這在控制台中給我一個錯誤,提示未定義require。 公平地說,我在頁面的腳本中添加了require.js。 我收到另一個錯誤(“未捕獲的錯誤:匿名define()模塊不匹配:...”)。


我的問題是:是否有一種簡單的Javascript方法(可能不涉及節點?)來刮擦我要獲取的婚禮清單? 或者也許是一個類似於我正在逐步嘗試的教程?

如果有任何幫助或建議,我將不勝感激。

我認為您唯一的問題是img選擇器。 更改

    {
          name: 'photo', 
          find: '.views-field-field-photo',
          grab: {
            by: 'attr',
            value: 'src'
          }
    },

對此

   {
          name: 'photo', 
          find: '.views-field-field-photo .field-content img',
          grab: {
            by: 'attr',
            value: 'src'
          }
    },

我實際上現在無法測試,但是應該可以正常工作!!

Node.js是一個獨立的應用程序,可獨立於網頁執行javascript。

require是Node導入軟件包的方式,並且不是由瀏覽器定義的, require.js是用於請求軟件包的javascript庫,但是它的工作方式與Node的require函數不同。

要使用request和cheerio,您需要從此處安裝Node.js,然后使用以下命令安裝request和cheerio:

  • npm install request --save
  • npm install cheerio --save

然后,您使用該目錄中的Node.js編寫的任何代碼都可以訪問這些模塊。

這是使用cheerio在Node.js中進行Web抓取的教程。

暫無
暫無

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

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