Pythonのクローラー技術を使って恥ずかしい事大百科にクローリングする方法を詳しく解説
クローラー技術を学ぶのは初めてです。Zhihu で「恥ずかしいことの百科事典」にアクセスする方法についてのジョークを読んだので、自分でクローラーを作成することにしました。
目標を達成する: 1. 恥ずかしいこと百科事典のジョークまでクロールする
2. 毎回ジョークを登り、Enter キーを押すたびに次のページまでクロールする
技術的実装: python 実装に基づいて、次を使用します。ライブラリ、re ライブラリ、bs4 ライブラリの BeautifulSoup メソッドをリクエストして実現します
主な内容: まず第一に、クロール実装のアイデアを明確にする必要があります。メインの フレームワークを構築しましょう。最初のステップでは、まず Requests ライブラリを使用して Web ページを取得するメソッドを作成します。2 番目のステップでは、bs4 ライブラリの BeautifulSoup メソッドを使用して、取得した Web ページの情報を分析し、正規表現を使用して関連する段落と一致させます。情報。 3 番目のステップは、取得した情報を印刷することです。私たちは皆、メイン 関数 を通じて上記のメソッドを実行します。
まず、関連するライブラリをインポートします
import requests from bs4 import BeautifulSoup import bs4 import re
2番目、最初にWebページの情報を取得します
def getHTMLText(url): try: user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' headers = {'User-Agent': user_agent} r = requests.get(url,headers = headers) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return ""
3、情報をrに入れて分析します
soup = BeautifulSoup(html,"html.parser")
必要なのは、ジョークのコンテンツと発行者です。 Web ページ ソース コードを表示すると、ジョークの発行者が
'p', attrs={'class': 'content'}中
であることがわかります。ジョークのコンテンツは
'p', attrs={'class': 'author clearfix'}中
にあります。そこで、bs4 ライブラリ メソッドを使用して、これら 2 つのタグ
def fillUnivlist(lis,li,html,count): soup = BeautifulSoup(html,"html.parser") try: a = soup.find_all('p', attrs={'class': 'content'}) ll = soup.find_all('p', attrs={'class': 'author clearfix'})
と の特定のコンテンツを抽出します。次に、特定の正規表現を使用してそれを取得します。 情報
for sp in a: patten = re.compile(r'<span>(.*?)</span>',re.S) Info = re.findall(patten,str(sp)) lis.append(Info) count = count + 1 for mc in ll: namePatten = re.compile(r'<h2>(.*?)</h2>', re.S) d = re.findall(namePatten, str(mc)) li.append(d)
注意する必要があるのは、find_all メソッドと re findall メソッドがリストを返すことです。正規表現を使用する場合、タグ内の改行は削除されず、大まかに抽出されるだけです。追加する必要があるのは 2 だけです。リストの内容を結合して出力します
def printUnivlist(lis,li,count): for i in range(count): a = li[i][0] b = lis[i][0] print ("%s:"%a+"%s"%b)
次に、入力制御関数を作成します。Q を入力してエラーを返し、終了し、Enter を入力して正しい値を返し、次の段落ページをロードします。
def input_enter(): input1 = input() if input1 == 'Q': return False else: return True
for ループ
を通じて次のページを読み込みます。def main(): passage = 0 enable = True for i in range(20): mc = input_enter() if mc==True: lit = [] li = [] count = 0 passage = passage + 1 qbpassage = passage print(qbpassage) url = 'http://www.qiushibaike.com/8hr/page/' + str(qbpassage) + '/?s=4966318' a = getHTMLText(url) fillUnivlist(lit, li, a, count) number = fillUnivlist(lit, li, a, count) printUnivlist(lit, li, number) else: break
import requests from bs4 import BeautifulSoup import bs4 import re def getHTMLText(url): try: user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' headers = {'User-Agent': user_agent} r = requests.get(url,headers = headers) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return "" def fillUnivlist(lis,li,html,count): soup = BeautifulSoup(html,"html.parser") try: a = soup.find_all('p', attrs={'class': 'content'}) ll = soup.find_all('p', attrs={'class': 'author clearfix'}) for sp in a: patten = re.compile(r'(.*?)',re.S) Info = re.findall(patten,str(sp)) lis.append(Info) count = count + 1 for mc in ll: namePatten = re.compile(r'(.*?)
', re.S) d = re.findall(namePatten, str(mc)) li.append(d) except: return "" return count def printUnivlist(lis,li,count): for i in range(count): a = li[i][0] b = lis[i][0] print ("%s:"%a+"%s"%b) def input_enter(): input1 = input() if input1 == 'Q': return False else: return True def main(): passage = 0 enable = True for i in range(20): mc = input_enter() if mc==True: lit = [] li = [] count = 0 passage = passage + 1 qbpassage = passage print(qbpassage) url = 'http://www.qiushibaike.com/8hr/page/' + str(qbpassage) + '/?s=4966318' a = getHTMLText(url) fillUnivlist(lit, li, a, count) number = fillUnivlist(lit, li, a, count) printUnivlist(lit, li, number) else: break main()
以上がPythonのクローラー技術を使って恥ずかしい事大百科にクローリングする方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

正規表現は、プログラミングにおけるパターンマッチングとテキスト操作のための強力なツールであり、さまざまなアプリケーションにわたるテキスト処理の効率を高めます。

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

Pythonでは、文字列を介してオブジェクトを動的に作成し、そのメソッドを呼び出す方法は?これは一般的なプログラミング要件です。特に構成または実行する必要がある場合は...

この記事では、numpy、pandas、matplotlib、scikit-learn、tensorflow、django、flask、and requestsなどの人気のあるPythonライブラリについて説明し、科学的コンピューティング、データ分析、視覚化、機械学習、Web開発、Hの使用について説明します。
