标签: cheerio

用 Cheerio 刮擦,文字不可见

所以我一直在使用 Cheerio 进行网页抓取,并且能够找到我正在寻找的特定 HTML 元素,但由于某种原因,文本不存在。

例如,在我的网络浏览器中,当我检查元素时,我看到<a href = "#" data-bind="text: MovieName, attr: { href: DetailsUrl }">Why Him?</a>.

但是,当我在抓取时打印出对象时,我看到了,<a href = "#" data-bind="text: MovieName, attr: { href: DetailsUrl }"></a>所以当我调用 .text() 函数时,它不会返回任何内容。为什么会出现这种情况?

json node.js web-scraping cheerio

2
推荐指数
1
解决办法
1910
查看次数

将Cheerio.js添加到Angular 6项目中?

我创建了一个全新的Angular 6项目并安装了Cheerio.js:

npm install cheerio

安装Cheerio.js之后,我发现将其添加到项目中所需要做的就是导入并将其添加到NgModule导入中:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import * as cheerio from 'cheerio';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    cheerio
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)

但是,执行完此操作后,出现TypeScript错误,类似于“找不到模块'cheerio'的声明文件”。

我会以错误的方式处理吗?我只需要能够在Angular应用程序中解析一些HTML并阅读Cheerio.js是必经之路。

cheerio angular

2
推荐指数
1
解决办法
1092
查看次数

如何修复 Node/Cheerio 中的“$(...).click is not a function”

我正在用 node.js 编写一个应用程序,它将导航到一个网站,单击网站上的一个按钮,然后从网站中提取某些数据。除了单击按钮方面外,一切都进行得很顺利。我似乎无法模拟按钮点击。我对此非常陌生,所以我很感激你们的任何建议!可悲的是,我已经在互联网上寻找解决此问题的方法,但一直找不到。

我已经使用.click().bind('click, ...)在.js文件中使用“要求”和“cheerio”。

我一直在使用也试图page.click()page.evaluate()在不同的.js文件使用“铬发射器”,“铬远程接口”和“人偶师”。

这是我的“请求”和“cheerio”文件的代码:

const request = require('request');
const cheerio = require('cheerio');

let p1 = {}, p2 = {}, p3 = {}, p4 = {}, p5 = {};

p1.name = 'TheJackal666';

p2.name = 'Naether Raviel';

p3.name = 'qman37';

p4.name = 'ranger51';

p5.name = 'fernanda12x';

const team = {1: p1, 2: p2, 3: p3, 4: p4, 5: p5};

for(var x in team){
        let url = 'https://na.op.gg/summoner/userName=' + 
team[x].name;

        request(url, (error, …
Run Code Online (Sandbox Code Playgroud)

javascript request node.js web-scraping cheerio

2
推荐指数
1
解决办法
3418
查看次数

使用cheerio从表中抓取所有行

我正在尝试从网页https://www.barchart.com/stocks/quotes/aapl/performance上的价格表现表中抓取所有行, 它是折线图下方的表格。该表没有任何 id 或 class 属性。我试图从它包含的 div 中获取表格。下面是代码,但它没有打印 td 元素内的文本。

$ = await fetchData(performanceHistoryUrl);    
let performanceTableDiv = $(".bc-table-scrollable-inner") // Class of div which is enclosing table
    var childSelector = 'table' // table selector 
    var performanceTable = performanceTableDiv.find(childSelector)
    performanceTable.each((index, element) => {
            if (index === 0) return true;
            const tds = $(element).find("td");
            const colOne = $(tds[0]).text();
            const colTwo = $(tds[1]).text();
            const colThree = $(tds[2]).text();
            const tableRow = { colOne, colTwo, tableRow };
            console.log(tableRow);
    });
Run Code Online (Sandbox Code Playgroud)

javascript node.js web-scraping cheerio

2
推荐指数
1
解决办法
3512
查看次数

jquery cheerio越过一系列元素

我正在尝试查看2个html表的元素:

<table class="content">
    <tbody>
        <tr>
            <th>head1</th>
            <td>value1</td>
        </tr>
        <tr>
            <th>head2</th>
            <td>value2</td>
        </tr>
    </tbody>
</table>
<table class="content">
    <tbody>
        <tr>
            <th>alpha1</th>
            <td>value4</td>
        </tr>
        <tr>
            <th>alpha2</th>
            <td>value5</td>
        </tr>
        <tr>
            <th>alpha3</th>
            <td>value6</td>
        </tr>
    </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

使用jquery选择器或cheerio,我正在尝试收集这些元素并将它们放在一个JSON对象中,其中文本元素将作为键和值作为值,因此它会像这样

{head1: 'value1',head2: 'value2', alpha1: 'value4', alpha2: 'value5', alpha3: 'value6'}
Run Code Online (Sandbox Code Playgroud)

我正在努力

$('.content).map(function(i, el) {el=$(el).find('>th').text(); return el;}).get().join(',');
Run Code Online (Sandbox Code Playgroud)

但它似乎给了我2个对象,因为2个同名的表.谢谢,谢谢

html jquery web-scraping cheerio

1
推荐指数
1
解决办法
4144
查看次数

使用Cheerio附加节点的兄弟姐妹?

我有一个包含h3和一些div的div.我想基本上将所有div包装在一个容器div中,但Cheerio没有包装或包装功能.

现在我正在附加容器div,使其成为需要成为其子女的div的兄弟.但我不知道如何将兄弟姐妹搬进这个容器.我想做的是:

$("div.container").append($this.siblings("div"));
Run Code Online (Sandbox Code Playgroud)

基本上"附加到此节点,该节点的div兄弟".但我无法弄清楚如何进行自我参考.

javascript dom cheerio

1
推荐指数
1
解决办法
740
查看次数

Node.js + Cheerio:循环内请求

我正在使用cheerio,request和Node.js.

当我运行下面的脚本时,它会以错误的顺序输出名称.我相信它是由它的异步性质引起的,我怎样才能让它以"正确"的顺序运行?我是否需要使用同步包或是否有办法以某种方式更改它以便它以同步方式工作?

app.get('/returned', function (req, res) {
    for (var y = 0; y < 10; y++) {
        var url = "http://example.com" + y + "/person.html";
        request(url, function (err, resp, body) {
            $ = cheerio.load(body);
            var links = $('#container');
            var name = links.find('span[itemprop="name"]').html(); // name
            if (name == null) {
                console.log("returned null");
            } else {
                console.log(name);
            }

        });
    }
});
Run Code Online (Sandbox Code Playgroud)

node.js cheerio

1
推荐指数
1
解决办法
1983
查看次数

使用cheerio替换属性值

以下代码用于替换所有<img>标记src值.但以下代码不会修改原始文档.$.html打印原始文档而不是修改过的文档.

    $ = cheerio.load(data);
    $("img").each(function() {
        var old_src=$(this).attr("src");
        var new_src = "/my_cached_image?url=" + encodeURIComponent(old_src);        
        $(this).prop("src", new_src);
    });
    modified_data = $.html();
Run Code Online (Sandbox Code Playgroud)

javascript node.js cheerio

1
推荐指数
1
解决办法
5027
查看次数

Cheerio itemprop属性内容选择

我在nodejs中使用Cheerio从URL中选择文本,其中元素包含属性itemprop ="name".

目前,我需要知道父元素才能读取属性和相关文本.请参阅下面的示例.

但是,我想要做的是为Element插入一个通配符.例如.H2,所以我可以选择name ="itemprop"的任何属性.这可能吗?

var $ = cheerio.load(body);
var domElem = $("h2[itemprop = 'name']").get(0);
var content = $(domElem).text().trim();
ogTitle = content;
console.log(content);   
Run Code Online (Sandbox Code Playgroud)

node.js cheerio

1
推荐指数
1
解决办法
1223
查看次数

NodeJS Cheerio Scraping li标签始终返回NULL

我正在尝试将URL变量中页面的li标记中包含的URL归零。它应该很简单,但是我无法使它正常工作。我得到了正确数量的元素,但是它们都是空白的。text()返回''&html()返回null。我在这里做错了什么?

const cheerio = require('cheerio');
const request = require('request');

function getHistory(){
  let url = 'http://coinmarketcap.com/historical/';
  request(url,(error,response,html)=>{
    var $ = cheerio.load(html);
    $('li.text-center').each((i,element)=>{
      var omg = $(this).html();
      console.log(omg);
    });
  });
}
Run Code Online (Sandbox Code Playgroud)

html javascript node.js cheerio

1
推荐指数
1
解决办法
1584
查看次数

标签 统计

cheerio ×10

node.js ×7

javascript ×5

web-scraping ×4

html ×2

angular ×1

dom ×1

jquery ×1

json ×1

request ×1