ホームページ バックエンド開発 PHPチュートリアル プログラマーは今でも広告付きの小説を読んでいますか?

プログラマーは今でも広告付きの小説を読んでいますか?

May 06, 2020 pm 06:41 PM
プログラマー

小説を読むことに慣れている人もいて、時々数章読んでいます。それらはすべて Baidu によって公開されていますが、基本的に非常に迷惑な広告があります。div 全体へのリンクを追加するか、誤って触れてしまうと、一部の Web サイトにジャンプしたり、無限ループに陥ったりすることもあります。一部のモバイル アプリには大量の広告が表示されるため、広告の煩わしさを避けるために小さなプログラムを作成する以外に何もすることがありません。

この記事では を使用します。広告の真の削除を実現するために、phpcurl を使用してページ simple_html_dom parsing を収集します。

どんな小説 Web サイトでも本を探しますが、このサイトは上記の問題のため携帯電話では特に扱いにくいです:

プログラマーは今でも広告付きの小説を読んでいますか?

これを読んでくださいこの小説手術を行います。 (免責事項: これは決して宣伝、侵害、削除ではありません)

1.curl の get メソッドを理解する

curl は、次の方法でアップロードまたはダウンロードするコマンド ライン ツールです。指定したURLデータを取得して表示します。 curl の c はクライアントを意味し、URL は URL を意味します。

PHP で cURL を使用すると、Get および Post リクエスト メソッドを実装できます

小説の単純なクロールには get メソッドのみが必要です。

次のサンプルコードは、get リクエストで小説の第 1 章ページの html を取得する例で、url パラメーターを変更するだけです。

初期化、オプションの設定、証明書の検証、実行、終了

<?php
header("Content-Type:text/html;charset=utf-8");
$url="https://www.7kzw.com/85/85445/27248636.html";
$ch = curl_init($url);   //初始化
//设置选项
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//获取的信息以字符串返回,而不是直接输出(必须) 
curl_setopt($ch,CURLOPT_TIMEOUT,10);//超时时间(必须)
curl_setopt($ch, CURLOPT_HEADER,0);// 	启用时会将头文件的信息作为数据流输出。 
//参数为1表示输出信息头,为0表示不输出
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); //不验证证书
// 3.执行
$res = curl_exec($ch);
// 4.关闭
curl_close($ch);
print_r($res);
?>
ログイン後にコピー

コメントは特に詳細です。手順に従って、curl get リクエストを送信します。 postリクエストを実行すると、postオプションを設定し、パラメータを渡し、最後に取得した情報を出力するための追加設定が必要です。実行結果は次のようになります。CSSレンダリングはありません。

プログラマーは今でも広告付きの小説を読んでいますか?

2. ページを解析します

出力ページには不要なコンテンツが多く含まれているため、次から抽出する必要があります。すべてのコンテンツ タイトルや各章の内容など、必要なコンテンツを取得するには、ページを解析する必要があります。

ページを解析するにはさまざまな方法があります。ここでは Simple_html_dom が使用されています。simple_html_dom.php クラス、インスタンス オブジェクトをダウンロードして参照し、内部メソッドを呼び出す必要があります。具体的な方法については、公式サイトや中国サイトのドキュメントなどを確認してください。

まず、この小説ページのソース コードを分析し、この章のタイトルと内容に対応する要素を確認します。

最初のタイトルは、クラスのブック名の h1 の下です。

プログラマーは今でも広告付きの小説を読んでいますか?

次にコンテンツ: コンテンツの ID を持つ div の下で、

プログラマーは今でも広告付きの小説を読んでいますか?

simple_html_dom はjquery に似た find メソッド。セレクターは、位置決めされた要素を見つけます。例:

find('.bookname h1'); //クラス bookname で h1 title 要素を検索します

find('#content'); //コンテンツ ID を持つ章のコンテンツを検索します。

コードは上記に基づいて追加されます:

include "simple_html_dom.php";
$html = new simple_html_dom();
@$html->load($res);
$h1 = $html->find(&#39;.bookname h1&#39;);
foreach ($h1 as $k=>$v) {
	$artic[&#39;title&#39;] = $v->innertext;
}
// 查找小说的具体内容
$divs = $html->find(&#39;#content&#39;);
foreach ($divs as $k=>$v) {
	$content = $v->innertext;
}
// 正则替换去除多余部分
$pattern = "/(<p>.*?<\/p>)|(<div .*?>.*?<\/div>)/";
$artic[&#39;content&#39;] = preg_replace($pattern,&#39;&#39;,$content);
echo $artic[&#39;title&#39;].&#39;<br>&#39;;
echo $artic[&#39;content&#39;];
ログイン後にコピー

上記の解析を使用して取得されたコンテンツメソッドは配列です。foreach を使用します。配列の内容を取得するには、定期的な置換を使用して本文内のテキスト広告を削除し、タイトルと小説の内容を配列に配置します。最も簡単な書き方はこれで完了です。実行結果は次のとおりです。

プログラマーは今でも広告付きの小説を読んでいますか?

# もちろん、この書き方は不快に見えますが、関数クラスを自分でカプセル化することもできます。以下は私が書いたコード例で、もちろん不備はありますが、拡張の参考にしてください。

<?php 
include "simple_html_dom.php";
include "mySpClass.php";
header("Content-Type:text/html;charset=utf-8");
$get_html = get_html($_GET[&#39;n&#39;]);
$artic = getContent($get_html);
echo $artic[&#39;title&#39;].&#39;<br>&#39;;
echo $artic[&#39;content&#39;];
/**
* 获取www.7kzw.com 获取每一章的页面html
* @param type $num 第几章,从第一开始(int)
* @return 返回字符串  
*/
function get_html($num){
	$start = 27248636;
	$real_num = $num+$start-1;
	$url = &#39;https://www.7kzw.com/85/85445/&#39;.$real_num.&#39;.html&#39;;
	$header = [
	&#39;User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0&#39;
	]; 
	return mySpClass()->getCurl($url,$header);
}
/**
* 获取www.7kzw.com小说标题数组
* @param type $get_html 得到的每一章的页面html
* @return 返回$artic数组,[&#39;title&#39;=>&#39;&#39;,&#39;content&#39;=>&#39;&#39;]
*/
function getContent($get_html){
	$html = new simple_html_dom();
	@$html->load($get_html);
	$h1 = $html->find(&#39;.bookname h1&#39;);
	foreach ($h1 as $k=>$v) {
		$artic[&#39;title&#39;] = $v->innertext;
	}
	// 查找小说的具体内容
	$divs = $html->find(&#39;#content&#39;);
	foreach ($divs as $k=>$v) {
		$content = $v->innertext;
	}
	// 正则替换去除多余部分
	$pattern = "/(<p>.*?<\/p>)|(<div .*?>.*?<\/div>)/";
	$artic[&#39;content&#39;] = preg_replace($pattern,&#39;&#39;,$content);
	return $artic;
}
?>
ログイン後にコピー
<?php
class mySpClass{
	//单例对象
    private static $ins = null;
    /**
     * 单例化对象
     */
    public static function exec()
    {
        if (self::$ins) {
            return self::$ins;
        }
        return self::$ins = new self();
    }
    
    /**
     * 禁止克隆对象
     */
    public function __clone()
    {
        throw new curlException(&#39;错误:不能克隆对象&#39;);
    }
	// 向服务器发送最简单的get请求
	public static function getCurl($url,$header){
		// 1.初始化
		$ch = curl_init($url);   //请求的地址
		// 2.设置选项
		curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//获取的信息以字符串返回,而不是直接输出(必须) 
		curl_setopt($ch,CURLOPT_TIMEOUT,10);//超时时间(必须)
		curl_setopt($ch, CURLOPT_HEADER,0);// 	启用时会将头文件的信息作为数据流输出。 
		//参数为1表示输出信息头,为0表示不输出
		curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); //不验证证书
		curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false); //不验证证书
		if(!empty($header)){
			curl_setopt($ch,CURLOPT_HTTPHEADER,$header);//设置头信息
		}
		// 3.执行
		$res = curl_exec($ch);
		// 4.关闭
		curl_close($ch);
		return $res;
	}
}
//curl方法不存在就设置一个curl方法
if (!function_exists(&#39;mySpClass&#39;)) {
    function mySpClass() {
        return mySpClass::exec();
    }
}
?>
ログイン後にコピー

上記のコード例の最終的な実行結果: 章に番号を入力し、$_GET['n']

プログラマーは今でも広告付きの小説を読んでいますか?

を通じてパラメーターを渡します。 概要:

知識ポイント:curl (ヒント: curl モジュールはあらゆる Web ページの php クラスを収集します)、通常の解析ツール simple_html_dom

書き込み方法は当初改良されましたが、最良の結果を得るには独自のサーバーを展開するのが最善です。そうでない場合は、コンピューターでしか視聴できないため、あまり便利ではありません。広告を許容する方がよいかもしれません。

上記は、phpcurl を使用してページを収集し、simple_html_dom を使用してそれらを解析する方法の詳細です。詳細については、php 中国語 Web サイトの他の関連記事に注目してください。

以上がプログラマーは今でも広告付きの小説を読んでいますか?の詳細内容です。詳細については、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)

どのAIプログラマーが一番優れているでしょうか? Devin、Tongyi Lingma、SWE エージェントの可能性を探る どのAIプログラマーが一番優れているでしょうか? Devin、Tongyi Lingma、SWE エージェントの可能性を探る Apr 07, 2024 am 09:10 AM

世界初の AI プログラマー Devin の誕生から 1 か月も経たない 2022 年 3 月 3 日、プリンストン大学の NLP チームはオープンソース AI プログラマー SWE-agent を開発しました。 GPT-4 モデルを利用して、GitHub リポジトリの問題を自動的に解決します。 SWE ベンチ テスト セットにおける SWE エージェントのパフォーマンスは Devin と同様で、平均 93 秒かかり、問題の 12.29% を解決しました。専用端末と対話することで、SWE エージェントはファイルの内容を開いて検索したり、自動構文チェックを使用したり、特定の行を編集したり、テストを作成して実行したりできます。 (注: 上記の内容は元の内容を若干調整したものですが、原文の重要な情報は保持されており、指定された文字数制限を超えていません。) SWE-A

C言語の魅力に迫る ~プログラマーの可能性を引き出す~ C言語の魅力に迫る ~プログラマーの可能性を引き出す~ Feb 24, 2024 pm 11:21 PM

C言語学習の魅力:プログラマーの可能性を引き出す テクノロジーの発展に伴い、コンピュータプログラミングは大きな注目を集めている分野です。数あるプログラミング言語の中でもC言語は常にプログラマーに愛されています。そのシンプルさ、効率性、幅広い用途により、C 言語の学習は、多くの人にとってプログラミングの分野に入る最初のステップとなっています。この記事では、C言語を学ぶ魅力と、C言語を学ぶことでプログラマーの可能性を引き出す方法について解説します。 C言語学習の魅力は、まずその簡単さにあります。他のプログラミング言語と比較すると、C言語は

520 人のプログラマーが恋愛感情を表現する独自の方法!断ることはできない! 520 人のプログラマーが恋愛感情を表現する独自の方法!断ることはできない! May 19, 2022 pm 03:07 PM

520 年が近づいています。彼は毎年恒例の犬を苦しめるショーのために再びここに来ました。最も合理的なコードと最もロマンチックな告白がどのように衝突するかを知りたいですか?最も完全で完全な広告コードを 1 つずつ見て、プログラマーのロマンスが女神の心を掴めるかどうかを確認してみましょう。

2023过年,又限制放烟花?程序猿有办法! 2023过年,又限制放烟花?程序猿有办法! Jan 20, 2023 pm 02:57 PM

本篇文章给大家介绍如何用前端代码实现一个烟花绽放的绚烂效果,其实主要就是用前端三剑客来实现,也就是HTML+CSS+JS,下面一起来看一下,作者会解说相应的代码,希望对需要的朋友有所帮助。

民間の仕事を引き受けてお金を稼ぎましょう! 2023 年のプログラマー向けの受注プラットフォームの完全なリスト! 民間の仕事を引き受けてお金を稼ぎましょう! 2023 年のプログラマー向けの受注プラットフォームの完全なリスト! Jan 09, 2023 am 09:50 AM

先週、「2023PHP起業家精神」について厚生生放送を行いましたが、多くの学生から具体的な受注プラットフォームについての質問がありましたので、以下のphp中国語サイトに比較的信頼できる22のプラットフォームをまとめましたので参考にしてください。

プログラマーは何をしますか プログラマーは何をしますか Aug 03, 2019 pm 01:40 PM

プログラマーの職務責任: 1. ソフトウェア プロジェクトの詳細な設計、コーディング、組織化と内部テストの実施に責任を負います; 2. プロジェクト マネージャーおよび関連担当者が顧客とコミュニケーションを取り、良好な顧客関係を維持できるように支援します; 3. 需要調査とプロジェクトに参加します実現可能性パフォーマンス分析、技術的実現可能性分析、需要分析 4. ソフトウェア部門が開発したソフトウェア プロジェクトを提供するための関連ソフトウェア テクノロジに精通しており、熟練している 5. ソフトウェア開発の状況についてプロジェクト マネージャーにタイムリーにフィードバックする責任がある 6. . ソフトウェアの開発および保守に参加する プロセス中の主要な技術的問題を解決する; 7. 関連する技術文書などの作成に責任を負います。

VSCode の過去のバージョンをダウンロードしてインストールする方法の簡単な分析 VSCode の過去のバージョンをダウンロードしてインストールする方法の簡単な分析 Apr 17, 2023 pm 07:18 PM

VSCode の過去のバージョンをダウンロードしてインストールする VSCode のインストール ダウンロード インストール リファレンス VSCode のインストール Windows バージョン: Windows10 VSCode バージョン: VScode1.65.0 (64 ビット ユーザー バージョン) この記事

2022 年の最高の Windows 11 ターミナル エミュレーターのリスト: 推奨事項トップ 15 2022 年の最高の Windows 11 ターミナル エミュレーターのリスト: 推奨事項トップ 15 Apr 24, 2023 pm 04:31 PM

端末エミュレータを使用すると、標準のコンピュータ端末の機能をエミュレートできます。これを使用すると、データ転送を実行したり、別のコンピュータにリモートでアクセスしたりできます。 Windows 11 などの高度なオペレーティング システムと組み合わせると、これらのツールの創造的な可能性は無限大になります。ただし、サードパーティ製の端末エミュレータが多数提供されています。したがって、適切なものを選択するのは困難です。ただし、必須の Windows 11 アプリと同様に、お客様が使用して生産性を向上できる最適なターミナルを選択しました。最適な Windows 11 ターミナル エミュレーターを選択するにはどうすればよいですか?このリストのツールを選択する前に、当社の専門家チームはまず Windows 11 との互換性をテストしました。私たちもチェックしました

See all articles