Rumah hujung hadapan web tutorial js 怎样实现百度指数爬虫功能

怎样实现百度指数爬虫功能

Apr 12, 2018 pm 04:45 PM
indeks reptilia Baidu

这次给大家带来怎样实现百度指数爬虫功能,实现百度指数爬虫功能的注意事项有哪些,下面就是实战案例,一起来看一下。

之前看过一篇脑洞大开的文章,介绍了各个大厂的前端反爬虫技巧,但也正如此文所说,没有100%的反爬虫方法,本文介绍一种简单的方法,来绕过所有这些前端反爬虫手段。

下面的代码以百度指数为例,代码已经封装成一个百度指数爬虫node库: https://github.com/Coffcer/baidu-index-spider

note: 请勿滥用爬虫给他人添麻烦

百度指数的反爬虫策略

观察百度指数的界面,指数数据是一个趋势图,当鼠标悬浮在某一天的时候,会触发两个请求,将结果显示在悬浮框里

可以发现,百度指数实际上在前端做了一定的反爬虫策略。当鼠标移动到图表上时,会触发两个请求,一个请求返回一段html,一个请求返回一张生成的图片。html中并不包含实际数值,而是通过设置width和margin-left,来显示图片上的对应字符。并且请求参数上带有res、res1这种我们不知如何模拟的参数,所以用常规的模拟请求或者html爬取的方式,都很难爬到百度指数的数据。

爬虫思路

怎么突破百度这种反爬虫方法呢,其实也很简单,就是完全不去管他是如何反爬虫的。我们只需模拟用户操作,将需要的数值截图下来,做图像识别就行。步骤大概是:

  1. 模拟登录

  2. 打开指数页面

  3. 鼠标移动到指定日期

  4. 等待请求结束,截取数值部分的图片

  5. 图像识别得到值

  6. 循环第3~5步,就得到每一个日期对应的值

这种方法理论上能爬任何网站的内容,接下来我们来一步步实现爬虫,下面会用到的库:

  1. puppeteer 模拟浏览器操作

  2. node-tesseract tesseract的封装,用来做图像识别

  3. jimp 图片裁剪

安装Puppeteer, 模拟用户操作

Puppeteer是Google Chrome团队出品的Chrome自动化工具,用来控制Chrome执行命令。可以模拟用户操作,做自动化测试、爬虫等。用法非常简单,网上有不少入门教程,顺着本文看完也大概可以知道如何使用。

API文档: https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md

安装:

npm install --save puppeteer
Salin selepas log masuk

Puppeteer在安装时会自动下载Chromium,以确保可以正常运行。但是国内网络不一定能成功下载Chromium,如果下载失败,可以使用cnpm来安装,或者将下载地址改成淘宝的镜像,然后再安装:

npm config set PUPPETEER_DOWNLOAD_HOST=https://npm.taobao.org/mirrors
npm install --save puppeteer
Salin selepas log masuk

你也可以在安装时跳过Chromium下载,通过代码指定本机Chrome路径来运行:

// npm
npm install --save puppeteer --ignore-scripts
// node
puppeteer.launch({ executablePath: '/path/to/Chrome' });
Salin selepas log masuk

实现

为版面整洁,下面只列出了主要部分,代码涉及到selector的部分都用了...代替,完整代码参看文章顶部的github仓库。

打开百度指数页面,模拟登录

这里做的就是模拟用户操作,一步步点击和输入。没有处理登录验证码的情况,处理验证码又是另一个话题了,如果你在本机登录过百度,一般不需要验证码。

// 启动浏览器,
// headless参数如果设置为true,Puppeteer将在后台操作你Chromium,换言之你将看不到浏览器的操作过程
// 设为false则相反,会在你电脑上打开浏览器,显示浏览器每一操作。
const browser = await puppeteer.launch({headless:false});
const page = await browser.newPage();
// 打开百度指数
await page.goto(BAIDU_INDEX_URL);
// 模拟登陆
await page.click('...');
await page.waitForSelecto('...');
// 输入百度账号密码然后登录
await page.type('...','username');
await page.type('...','password');
await page.click('...');
await page.waitForNavigation();
console.log(':white_check_mark: 登录成功');
Salin selepas log masuk

模拟移动鼠标,获取需要的数据

需要将页面滚动到趋势图的区域,然后移动鼠标到某个日期上,等待请求结束,tooltip显示数值,再截图保存图片。

// 获取chart第一天的坐标
const position = await page.evaluate(() => {
 const $image = document.querySelector('...');
 const $area = document.querySelector('...');
 const areaRect = $area.getBoundingClientRect();
 const imageRect = $image.getBoundingClientRect();
 // 滚动到图表可视化区域
 window.scrollBy(0, areaRect.top);
 return { x: imageRect.x, y: 200 };
});
// 移动鼠标,触发tooltip
await page.mouse.move(position.x, position.y);
await page.waitForSelector('...');
// 获取tooltip信息
const tooltipInfo = await page.evaluate(() => {
 const $tooltip = document.querySelector('...');
 const $title = $tooltip.querySelector('...');
 const $value = $tooltip.querySelector('...');
 const valueRect = $value.getBoundingClientRect();
 const padding = 5;
 return {
 title: $title.textContent.split(' ')[0],
 x: valueRect.x - padding,
 y: valueRect.y,
 width: valueRect.width + padding * 2,
 height: valueRect.height
 }
});
Salin selepas log masuk

截图

计算数值的坐标,截图并用jimp对裁剪图片。

await page.screenshot({ path: imgPath });
// 对图片进行裁剪,只保留数字部分
const img = await jimp.read(imgPath);
await img.crop(tooltipInfo.x, tooltipInfo.y, tooltipInfo.width, tooltipInfo.height);
// 将图片放大一些,识别准确率会有提升
await img.scale(5);
await img.write(imgPath);
Salin selepas log masuk

图像识别

这里我们用Tesseract来做图像识别,Tesseracts是Google开源的一款OCR工具,用来识别图片中的文字,并且可以通过训练提高准确率。github上已经有一个简单的node封装: node-tesseract ,需要你先安装Tesseract并设置到环境变量。

Tesseract.process(imgPath, (err, val) => {
if (err || val == null) {
 console.error(':x: 识别失败:' + imgPath);
 return;
}
console.log(val);
Salin selepas log masuk

实际上未经训练的Tesseracts识别起来会有少数几个错误,比如把9开头的数字识别成`3,这里需要通过训练去提升Tesseracts的准确率,如果识别过程出现的问题都是一样的,也可以简单通过正则去修复这些问题。

封装

实现了以上几点后,只需组合起来就可以封装成一个百度指数爬虫node库。当然还有许多优化的方法,比如批量爬取,指定天数爬取等,只要在这个基础上实现都不难了。

const recognition = require('./src/recognition');
const Spider = require('./src/spider');
module.exports = {
 async run (word, options, puppeteerOptions = { headless: true }) {
 const spider = new Spider({ 
 imgDir, 
 ...options 
 }, puppeteerOptions);
 // 抓取数据
 await spider.run(word);
 // 读取抓取到的截图,做图像识别
 const wordDir = path.resolve(imgDir, word);
 const imgNames = fs.readdirSync(wordDir);
 const result = [];
 imgNames = imgNames.filter(item => path.extname(item) === '.png');
 for (let i = 0; i < imgNames.length; i++) {
 const imgPath = path.resolve(wordDir, imgNames[i]);
 const val = await recognition.run(imgPath);
 result.push(val);
 }
 return result;
 }
}
Salin selepas log masuk

反爬虫

最后,如何抵挡这种爬虫呢,个人认为通过判断鼠标移动轨迹可能是一种方法。当然前端没有100%的反爬虫手段,我们能做的只是给爬虫增加一点难度。

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

easyui日期时间框在IE中的兼容性如何处理

vue判断input输入内容有否有空格

Atas ialah kandungan terperinci 怎样实现百度指数爬虫功能. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

2 bulan kemudian, robot humanoid Walker S boleh melipat pakaian 2 bulan kemudian, robot humanoid Walker S boleh melipat pakaian Apr 03, 2024 am 08:01 AM

Editor Laporan Kuasa Mesin: Wu Xin Versi domestik robot humanoid + pasukan model besar menyelesaikan tugas operasi bahan fleksibel yang kompleks seperti melipat pakaian buat kali pertama. Dengan pelancaran Figure01, yang mengintegrasikan model besar berbilang modal OpenAI, kemajuan berkaitan rakan domestik telah menarik perhatian. Baru semalam, UBTECH, "stok robot humanoid nombor satu" China, mengeluarkan demo pertama robot humanoid WalkerS yang disepadukan secara mendalam dengan model besar Baidu Wenxin, menunjukkan beberapa ciri baharu yang menarik. Kini, WalkerS, diberkati oleh keupayaan model besar Baidu Wenxin, kelihatan seperti ini. Seperti Rajah01, WalkerS tidak bergerak, tetapi berdiri di belakang meja untuk menyelesaikan satu siri tugasan. Ia boleh mengikut perintah manusia dan melipat pakaian

DeepSeek Web Versi Pintu Masuk Laman Web Rasmi DeepSeek DeepSeek Web Versi Pintu Masuk Laman Web Rasmi DeepSeek Feb 19, 2025 pm 04:54 PM

DeepSeek adalah alat carian dan analisis pintar yang kuat yang menyediakan dua kaedah akses: versi web dan laman web rasmi. Versi web adalah mudah dan cekap, dan boleh digunakan tanpa pemasangan; Sama ada individu atau pengguna korporat, mereka dapat dengan mudah mendapatkan dan menganalisis data besar-besaran melalui DeepSeek untuk meningkatkan kecekapan kerja, membantu membuat keputusan dan menggalakkan inovasi.

Bagaimana untuk melumpuhkan mod inkognito Baidu Bagaimana untuk melumpuhkan mod inkognito Baidu Feb 29, 2024 pm 03:40 PM

Mod Inkognito Baidu ialah ciri perlindungan privasi yang membolehkan pengguna menggunakan carian Baidu atau perkhidmatan lain tanpa meninggalkan sebarang maklumat peribadi atau sejarah penyemakan imbas. Bagi sesetengah pengguna, mereka mungkin mahu mematikan mod inkognito supaya mereka boleh menyimpan sejarah carian atau sejarah penyemakan imbas mereka. Jadi bagaimana untuk melepaskan mod inkognito Baidu? Rakan yang masih kurang jelas, jangan risau Seterusnya, editor akan membawakan anda kaedah untuk mengalih keluar mod penyemakan imbas inkognito. Anda boleh mengikuti langkah-langkah di bawah. Cara melepaskan mod inkognito Baidu 1. Klik ikon [Baidu] pada desktop untuk membuka APP Baidu. 2. Cari sesuatu dan masukkan halaman hasil carian. 3. Klik [≡] di bahagian bawah halaman. 4. Cari "Multi-Window" dalam tetingkap pop timbul dan klik untuk masuk. 5. Hidupkan/matikan "Inkognito"

Pengenalan kepada cara mendapatkan Kerang Baidu Xiyang Pengenalan kepada cara mendapatkan Kerang Baidu Xiyang Mar 28, 2024 am 09:11 AM

Terdapat ramai pengguna di Xirang yang tidak tahu di mana cengkerang berada dan cara mendapatkannya Beberapa pemain telah mencari selama beberapa jam tetapi masih tidak menemuinya Di bawah, editor akan membawa anda cara mendapatkan cengkerang Baidu Xirang Datang dan lihat. Bagaimana untuk mendapatkan Baidu Xirang Shell 1. Mula-mula kita perlu datang ke komuniti, dan kemudian datang ke lokasi dalam gambar di bawah. 2. Pilih destinasi di sini dan pilih untuk memasuki tingkat 188. 3. Selepas memasuki tingkat 188, anda akan melihat gesaan ini apabila berjalan-jalan. Hanya klik I Got It. 4. Lokasi cangkerang mungkin agak sukar dicari Di belakang lif 188, terdapat titik kecil bercahaya iaitu cangkerang. 5. Anda perlu menggunakan pengawal VR untuk mengambil cengkerang. Hanya klik pada cangkerang. Kaedah penebusan 1. Mula-mula klik ikon "Tetapan" di penjuru kanan sebelah atas halaman dan pilih "

Baidu Apollo mengeluarkan Apollo ADFM, model besar pertama di dunia yang menyokong pemanduan autonomi L4 Baidu Apollo mengeluarkan Apollo ADFM, model besar pertama di dunia yang menyokong pemanduan autonomi L4 Jun 04, 2024 pm 08:01 PM

Pada 15 Mei, Baidu Apollo mengadakan Hari Apollo 2024 di Wuhan Baidu Carrot Auto Robot Zhixing Valley, secara menyeluruh menunjukkan kemajuan utama Baidu dalam pemanduan autonomi sepanjang sepuluh tahun yang lalu, membawa lonjakan teknologi berdasarkan model besar dan definisi baharu keselamatan penumpang rangkaian operasi kenderaan autonomi terbesar di dunia, Baidu telah menjadikan pemanduan autonomi lebih selamat daripada pemanduan manusia. Terima kasih kepada ini, kaedah perjalanan yang lebih selamat, lebih selesa, hijau dan rendah karbon bertukar daripada ideal kepada realiti. Wang Yunpeng, naib presiden Kumpulan Baidu dan presiden Kumpulan Perniagaan Pemanduan Pintar, berkata di tempat kejadian: "Niat asal kami membina kenderaan autonomi adalah untuk memuaskan keinginan orang ramai untuk perjalanan yang lebih baik. Kepuasan orang ramai adalah penggerak kami. Kerana keselamatan, Begitu cantik, kami gembira melihat

Baidu Robin Li mengetuai pasukan melawat PetroChina untuk membincangkan perisikan industri minyak dan gas Baidu Robin Li mengetuai pasukan melawat PetroChina untuk membincangkan perisikan industri minyak dan gas May 07, 2024 pm 06:13 PM

Menurut berita dari laman web ini pada 7 Mei, pada 6 Mei, Robin Li, pengasas, pengerusi dan Ketua Pegawai Eksekutif Baidu, mengetuai pasukan untuk melawat China National Petroleum Corporation (selepas ini dirujuk sebagai "PetroChina") di Beijing dan bertemu dengan pengarah Pengerusi Perbadanan Petroleum Nasional China dan Setiausaha Parti Dai Houliang mengadakan perbincangan. Kedua-dua pihak mengadakan pertukaran mendalam mengenai pengukuhan kerjasama dan menggalakkan integrasi mendalam industri tenaga dengan kecerdasan digital. PetroChina akan mempercepatkan pembinaan Perbadanan Petroleum China digital, mengukuhkan kerjasama dengan Kumpulan Baidu, menggalakkan integrasi mendalam industri tenaga dengan kecerdasan digital, dan membuat sumbangan yang lebih besar untuk memastikan keselamatan tenaga negara. Robin Li berkata bahawa "kemunculan pintar" dan keupayaan teras pemahaman, penjanaan, logik, dan ingatan yang dipaparkan oleh model besar telah membuka ruang yang lebih luas untuk imaginasi untuk gabungan teknologi termaju dan perniagaan minyak dan gas. Sentiasa

Dilaporkan bahawa telefon mudah alih Samsung Galaxy S24 siri versi Cina 'Cari dalam Bulatan' akan menyokong carian Google Dilaporkan bahawa telefon mudah alih Samsung Galaxy S24 siri versi Cina 'Cari dalam Bulatan' akan menyokong carian Google Jun 01, 2024 am 09:54 AM

Menurut berita pada 31 Mei, blogger @ibinguniverse mengumumkan hari ini bahawa telefon bimbit siri Samsung Galaxy S24 versi Cina "Cari dalam Bulatan" akan menyokong carian Google. Blogger tidak mendedahkan masa pelancaran tertentu. Menurut pengenalan Samsung sebelum ini, siri Samsung Galaxy S24 telah dilengkapi dengan banyak keupayaan AI peringkat tinggi, fungsi praktikal berasaskan AI seperti input, terjemahan, perakam, nota dan kamera, untuk menyediakan pengguna dengan komprehensif yang lebih mudah dan cekap. pengalaman. Berbeza daripada versi luar negara, kebanyakan fungsi AI bagi siri Samsung Galaxy S24 disediakan oleh pengeluar domestik, seperti Baidu. Sebelum ini dilaporkan, Galaxy AI menyepadukan dengan mendalam pelbagai keupayaan model besar Baidu Wenxin, yang boleh menyediakan fungsi panggilan dan terjemahan yang didayakan bahagian hujung, serta ringkasan pintar yang dibawa oleh AI generatif.

cadangan alat ai cadangan alat ai Nov 29, 2024 am 11:08 AM

Artikel ini memperkenalkan enam alatan AI yang popular, termasuk Douyin Doubao, Wenxin Yige, Tencent Zhiying, Baidu Feipiao EasyDL, Baidu AI Studio dan iFlytek Spark Cognitive Large Model. Alat ini merangkumi fungsi yang berbeza seperti penciptaan teks, penjanaan imej, penyuntingan video dan pembangunan model AI. Memilih alat AI yang betul memerlukan pertimbangan faktor seperti keperluan fungsi, tahap teknikal dan belanjawan kos. Alat ini menyediakan penyelesaian yang mudah dan cekap untuk individu dan perniagaan yang memerlukan bantuan AI.

See all articles