Nodejs 求助:百度文库抓取问题

发布于 1周前 作者 yibo5220 来自 nodejs/Nestjs

Nodejs 求助:百度文库抓取问题

最近抓取百度文库时遇到问题。试图用 casperjs 来抓取百度文库文章,对方采用了分页,要获取全部文章内容,必须爬完每一个分页。

最先处理分页的方式是直接在 URL 中加入页面后缀,例如 https://wk.baidu.com/view/f75735e5a8956bec0875e353#6,代表第 6 页,以此类推。但尝试过后发现不行,服务器有时返回第 1 页内容。

现在尝试模拟点击来获取分页,but。。。问题又来了,chrome console 中利用 jquery,或在 casperjs 中 click “下一页”、“继续阅读”等元素都不能生效,但是,其他元素例如左上方的“百度文库”可以却可以 click 生效。我怀疑是不是百度文库采用了什么方法来防止模拟点击,所以点击不能生效。

文章地址: https://wk.baidu.com/view/f75735e5a8956bec0875e353

请各位大大们指点指点!


6 回复

没用过 casperjs
但是
console 中输入
$(’.fc2e’).click()
可以加载啊


是移动端的页面,界面不一样的

Input.dispatchMouseEvent

具体在页面中该如何操作呢?

针对你提到的Node.js中百度文库抓取问题,这里有几个关键点和建议,由于网络爬虫涉及法律和道德问题,务必确保你的行为符合相关网站的服务条款和法律法规。

首先,使用Node.js进行网页抓取,常用的库是axiosnode-fetch来发起HTTP请求,cheerio来解析HTML。以下是一个简单的示例代码,展示如何使用这些工具:

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

async function fetchBaiduWenku() {
    try {
        const { data } = await axios.get('https://wenku.baidu.com/some-document-url'); // 替换为具体文档URL
        const $ = cheerio.load(data);
        
        // 假设我们要抓取文档的标题
        const title = $('.some-class-name').text(); // 替换为具体的CSS选择器
        console.log('Title:', title);
        
    } catch (error) {
        console.error('Error fetching document:', error);
    }
}

fetchBaiduWenku();

注意

  1. 反爬虫机制:百度文库等网站通常有反爬虫机制,可能会使用验证码、IP封锁等手段,因此直接抓取可能会遇到困难。
  2. 合法性与隐私:确保你的抓取行为不违反服务条款,并尊重用户隐私。
  3. 动态内容:如果页面内容是动态加载的,可能需要使用Puppeteer这类工具来模拟浏览器行为。

建议首先检查百度文库是否提供了API接口,使用官方API是更合法和稳定的方式。

回到顶部