ホームページ ウェブフロントエンド jsチュートリアル Baiduインデックスクローラー機能の実装方法

Baiduインデックスクローラー機能の実装方法

Apr 12, 2018 pm 04:45 PM
索引 爬虫類 百度

今回は、Baidu インデックス クローラー機能の実装方法と、Baidu インデックス クローラー機能を実装するための notes について説明します。以下は実際的なケースです。見てみましょう。

以前、さまざまな大手メーカーのフロントエンドのクロール対策技術を紹介した想像力豊かな記事を読んだことがありますが、この記事で述べられているように、100% のクロール対策方法は存在しません。この記事では、これらすべてのフロントエンドを回避する簡単な方法を紹介します。クローラー対策終了。

次のコードは、Baidu Index を例として取り上げており、コードは Baidu Index クローラー ノード ライブラリにパッケージ化されています: https://github.com/Coffcer/baidu-index-spider

注: クローラーを悪用して他人に迷惑をかけないでください

Baidu Index のクローラー対策戦略

Baidu Index のインターフェイスを観察してください。インデックス データはトレンド チャートです。マウスを特定の日に置くと、2 つのリクエストがトリガーされ、結果がフローティング ボックスに表示されます。 Baidu Index が実際にフロントエンドに特定のクローラー対策戦略を実装していることがわかります。マウスがグラフ上に移動すると、2 つのリクエストがトリガーされ、1 つのリクエストは HTML を返し、もう 1 つのリクエストは生成された画像を返します。 HTML には実際の値は含まれていませんが、width と

margin-left

を設定することで、画像上に対応する文字が表示されます。さらに、リクエストパラメータには、シミュレーション方法がわからないresやres1などのパラメータが含まれているため、従来のシミュレートされたリクエストやHTMLクローリング方法を使用してBaidu Indexデータをクロールすることは困難です。

クローラーのアイデア

Baidu のクローラー対策方法を突破する方法は実際には非常に簡単です。クローラー対策方法については気にしないでください。ユーザーの操作をシミュレートし、必要な値をスクリーンショットし、画像認識を行うだけで済みます。手順は大まかに次のとおりです:

    模擬ログイン
  1. インデックスページを開きます
  2. 指定した日付にマウスを移動します
  3. リクエストが終了するのを待って、画像の数値部分をキャプチャします
  4. 画像認識が価値を得る
  5. ステップ 3 ~ 5 をループして、各日付に対応する値を取得します
  6. この方法では、理論的にはあらゆる Web サイトのコンテンツをクロールできます。次に、次のライブラリを段階的に実装します。
人形遣い

ブラウザ操作をシミュレートします

  1. node-tesseract 画像認識に使用されるtesseractのパッケージ

  2. jimp 画像のトリミング

  3. Puppeteer をインストールしてユーザー操作をシミュレートする

  4. Puppeteer は、Google Chrome チームによって作成された Chrome 自動化ツールで、Chrome の実行コマンドを制御するために使用されます。ユーザー操作をシミュレートしたり、自動テストやクローラーなどを実行したりできます。使い方はとても簡単です。この記事を読めば使い方がわかると思います。

API ドキュメント: https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md インストール:

rree

Puppeteer はインストール中に Chromium を自動的にダウンロードし、正しく動作することを確認します。ただし、国内ネットワークでは Chromium を正常にダウンロードできない場合があります。ダウンロードに失敗した場合は、cnpm を使用してインストールするか、ダウンロード アドレスを Taobao ミラーに変更してからインストールしてください:

npm install --save puppeteer
ログイン後にコピー

インストール中に Chromium のダウンロードをスキップし、コードでネイティブ Chrome パスを指定して実行することもできます:

npm config set PUPPETEER_DOWNLOAD_HOST=https://npm.taobao.org/mirrors
npm install --save puppeteer
ログイン後にコピー

達成しました

レイアウトをわかりやすくするために、主要な部分のみを以下にリストします。セレクターに関係するコードの部分は次のように置き換えられます。完全なコードについては、記事の上部にある github リポジトリを参照してください。

Baidu Index ページを開いてログインをシミュレートします

ここで行われるのは、ユーザーの操作、クリックと入力を段階的にシミュレートすることです。ログイン

認証コード

を処理する必要はありません。Baidu にローカルでログインしている場合は、通常、認証コードの処理は必要ありません。 りー

マウスの動きをシミュレートし、必要なデータを取得します

需要将页面滚动到趋势图的区域,然后移动鼠标到某个日期上,等待请求结束,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
 }
});
ログイン後にコピー

截图

计算数值的坐标,截图并用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);
ログイン後にコピー

图像识别

这里我们用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);
ログイン後にコピー

实际上未经训练的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;
 }
}
ログイン後にコピー

反爬虫

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

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

推荐阅读:

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

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

以上がBaiduインデックスクローラー機能の実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

2か月後、人型ロボットWalker Sが服をたたむことができるようになった 2か月後、人型ロボットWalker Sが服をたたむことができるようになった Apr 03, 2024 am 08:01 AM

Machine Power Report 編集者: Wu Xin 国内版の人型ロボット + 大型模型チームは、衣服を折りたたむなどの複雑で柔軟な素材の操作タスクを初めて完了しました。 OpenAIのマルチモーダル大規模モデルを統合したFigure01の公開により、国内同業者の関連動向が注目を集めている。つい昨日、中国の「ヒューマノイドロボットのナンバーワン株」であるUBTECHは、Baidu Wenxinの大型モデルと深く統合されたヒューマノイドロボットWalkerSの最初のデモを公開し、いくつかの興味深い新機能を示した。 Baidu Wenxin の大規模モデル機能の恩恵を受けた WalkerS は次のようになります。 Figure01 と同様に、WalkerS は動き回るのではなく、机の後ろに立って一連のタスクを完了します。人間の命令に従って服をたたむことができる

Deepseek Webバージョンの入り口Deepseek公式ウェブサイトの入り口 Deepseek Webバージョンの入り口Deepseek公式ウェブサイトの入り口 Feb 19, 2025 pm 04:54 PM

DeepSeekは、Webバージョンと公式Webサイトの2つのアクセス方法を提供する強力なインテリジェント検索および分析ツールです。 Webバージョンは便利で効率的であり、公式ウェブサイトは包括的な製品情報、ダウンロードリソース、サポートサービスを提供できます。個人であろうと企業ユーザーであろうと、DeepSeekを通じて大規模なデータを簡単に取得および分析して、仕事の効率を向上させ、意思決定を支援し、イノベーションを促進することができます。

Baidu シークレット モードを無効にする方法 Baidu シークレット モードを無効にする方法 Feb 29, 2024 pm 03:40 PM

Baidu シークレット モードは、ユーザーが個人情報や閲覧履歴を残さずに Baidu 検索やその他のサービスを利用できるようにするプライバシー保護機能です。ユーザーによっては、検索履歴や閲覧履歴を保存できるように、シークレット モードをオフにする必要がある場合があります。では、Baidu シークレット モードを解除するにはどうすればよいでしょうか?まだよくわからないという友人も、心配しないでください。次に、エディターでシークレット ブラウジング モードを削除する方法が表示されます。次の手順に従ってください。 Baidu シークレット モードの解除方法 1. デスクトップの [Baidu] アイコンをクリックして、Baidu APP を開きます。 2. 何かを検索し、検索結果ページに入ります。 3. ページ下部の[≡]をクリックします。 4. ポップアップウィンドウで「マルチウィンドウ」を見つけ、クリックして入力します。 5.「シークレットモード」のオン/オフを切り替える

百度西陽貝殻の入手方法を紹介 百度西陽貝殻の入手方法を紹介 Mar 28, 2024 am 09:11 AM

西浪には貝殻の場所と入手方法が分からないユーザーがたくさんいます。数時間探してもまだ見つからないプレイヤーもいます。以下では、編集者が百度西陽貝殻の入手方法を紹介します。 . ぜひ見に来てください。 Baidu Xirang Shell の入手方法 1. まずコミュニティに来てから、下の写真の場所に来る必要があります。 2. ここで目的地を選択し、188階に入​​るを選択します。 3. 188 階に入った後、歩いているとこのプロンプトが表示されるので、「了解しました」をクリックします。 4. 砲弾の場所は少し見つけにくいですが、188 エレベーターのすぐ後ろに、砲弾である小さな光る点があります。 5. 貝殻をクリックするには VR コントローラーを使用する必要があります。引き換え方法 1. まず、ページ右上隅の「設定」アイコンをクリックし、「」を選択します。

Baidu Apollo、L4自動運転に対応した世界初の大型モデル「Apollo ADFM」を発売 Baidu Apollo、L4自動運転に対応した世界初の大型モデル「Apollo ADFM」を発売 Jun 04, 2024 pm 08:01 PM

5月15日、Baidu Apolloは武漢Baidu キャロット Auto Robot Zhixing Valleyで2024年アポロデーを開催し、過去10年間におけるBaiduの自動運転における大きな進歩を包括的に実証し、大型モデルと乗客の安全性の新たな定義に基づいた技術的飛躍をもたらした。世界最大の自動運転ネットワークである百度は、自動運転を人間の運転よりも安全なものにしました。このおかげで、より安全、より快適、環境に優しい、低炭素の旅行方法が理想から現実へと変わりつつあります。百度グループ副社長兼インテリジェント・ドライビング・ビジネス・グループ社長の王雲鵬氏はその場で「自動運転車を開発するという私たちの本来の目的は、より良い旅行への人々の高まる切望を満たすことだ。人々の満足こそが私たちの原動力である。なぜなら安全性、とても美しいので、見ることができて嬉しいです

百度のロビン・リー氏は石油・ガス業界のインテリジェンスについて話し合うためにチームを率いてペトロチャイナを訪問した 百度のロビン・リー氏は石油・ガス業界のインテリジェンスについて話し合うためにチームを率いてペトロチャイナを訪問した May 07, 2024 pm 06:13 PM

5月7日の当サイトのニュースによると、5月6日、百度の創業者兼会長兼最高経営責任者(CEO)のロビン・リー氏がチームを率いて北京の中国石油天然気集団公司(以下、ペトロチャイナ)を訪問し、同社の取締役らと会談した。中国石油総公司の董事長と戴侯良党書記が会談した。両者は協力を強化し、エネルギー産業とデジタルインテリジェンスの深い統合を促進することについて綿密な意見交換を行った。ペトロチャイナはデジタル中国石油総公司の構築を加速し、百度グループとの協力を強化し、エネルギー産業とデジタルインテリジェンスの徹底的な統合を促進し、国家エネルギー安全保障の確保にさらに貢献する。ロビン・リー氏は、大型モデルによって示される「インテリジェントな創発」と理解、生成、論理、記憶といった中核的な機能によって、最先端技術と石油・ガス事業の組み合わせに対する想像力のより広い空間が開かれたと述べた。いつも

Samsung Galaxy S24シリーズ携帯電話の中国版「Search in Circle」がGoogle検索に対応すると報じられている Samsung Galaxy S24シリーズ携帯電話の中国版「Search in Circle」がGoogle検索に対応すると報じられている Jun 01, 2024 am 09:54 AM

5月31日のニュースによると、ブロガー@ibinguniverseが本日、Samsung Galaxy S24シリーズ携帯電話の中国版「Search in Circle」がGoogle検索をサポートするというニュースを伝えた。ブロガーは具体的な発売時期については明らかにしなかった。 Samsungの以前の紹介によると、Samsung Galaxy S24シリーズは多くの高レベルのAI機能、入力、翻訳、レコーダー、メモ、カメラなどのAIベースの実用的な機能を搭載しており、ユーザーにより便利で効率的な包括的なサービスを提供します。経験。海外版とは異なり、Samsung Galaxy S24シリーズのAI機能のほとんどはBaiduなどの国内メーカーが提供しています。以前に報告されたように、Galaxy AI は、Baidu Wenxin 大型モデルの複数の機能を深く統合しており、エンドサイド対応の通話機能と翻訳機能、および生成 AI によってもたらされるインテリジェントな要約を提供できます。

AIツールのおすすめ AIツールのおすすめ Nov 29, 2024 am 11:08 AM

この記事では、Douyin Doubao、Wenxin Yige、Tencent Zhiying、Baidu Feipiao EasyDL、Baidu AI Studio、iFlytek Spark Cognitive Large Model を含む 6 つの人気 AI ツールを紹介します。これらのツールは、テキスト作成、画像生成、ビデオ編集、AI モデル開発などのさまざまな機能をカバーしています。適切な AI ツールを選択するには、機能要件、技術レベル、コスト予算などの要素を考慮する必要があります。これらのツールは、AI 支援を必要とする個人や企業に便利で効率的なソリューションを提供します。

See all articles