ホームページ >バックエンド開発 >Python チュートリアル >Python での実践的なクローラー戦闘: Baidu はクローラーを熟知しています
Python は強力なプログラミング言語として、インターネット上で大量のデータをより簡単に取得するのに役立ちます。その中でもクローラー技術は非常に代表的な部分です。クローラーはインターネット上のさまざまなデータを取得・分析することで、私たちに多くの貴重な情報を提供してくれます。 Python では、クローラー技術も広く使用できます。 Baidu Zhizhi は知識に関する質問と回答を多数提供する Web サイトです。この記事では、Baidu Zhizhi クローラーを Python で実装する方法を紹介します。
まず、Baidu Web サイトをクロールする方法を理解する必要があります。 Python では、request ライブラリまたは urllib ライブラリの urlopen 関数を使用して、Web サイトのソース コードを取得できます。ソース コードを取得したら、BeautifulSoup ライブラリを使用して Web ページ ドキュメントを解析し、必要な情報を簡単に除外できます。ここで、クロールする必要があるのは、各質問とそれに対応する最良の回答です。 Baidu が知っているソース コードを見ると、それぞれのベストアンサーが独自の独立した classID を持っていることがわかり、これに基づいて対応するコンテンツを選択できます。
コードの実装プロセスは次のとおりです:
import requests from bs4 import BeautifulSoup # 网页地址 url = "https://zhidao.baidu.com/question/2031956566959407839.html" # 发送请求 r = requests.get(url) # 解析网页 soup = BeautifulSoup(r.text, "html.parser") # 获取问题 question = soup.find("span", class_="ask-title").text print("问题: ", question) # 获取最佳答案 answer = soup.find("pre", class_="best-text mb-10").text print("最佳答案: ", answer)
次に、複数の質問と回答をクロールする必要があります。その答え。質問のリストを作成し、for ループを通じて各質問と回答をクロールして、出力することができます。 Baidu 上の各質問 URL のサフィックスは異なるため、クロールする必要がある Web ページのアドレスを文字列形式で自動的に生成する必要があります。
以下は実装コードです:
import requests from bs4 import BeautifulSoup # 创建问题列表 questions = [ "2031956566959407839", "785436012916117832", "1265757662946113922", "455270192556513192", "842556478655981450" ] # 循环爬取问题和最佳答案 for q in questions: # 根据问题ID拼接URL url = f"https://zhidao.baidu.com/question/{q}.html" # 发送请求 r = requests.get(url) # 解析网页 soup = BeautifulSoup(r.text, "html.parser") # 获取问题 try: question = soup.find("span", class_="ask-title").text except: question = "" # 获取最佳答案 try: answer = soup.find("pre", class_="best-text mb-10").text except: answer = "" # 打印问题和答案 print("问题: ", question) print("最佳答案: ", answer) print("----------------------")
最後に、クロール結果をファイルに保存します。 Python の組み込みモジュール csv を使用して、各質問と回答を csv ファイルに保存できます。また、中国語の文字化けの問題を回避するために、csv ファイルのヘッダーに BOM (Byte Order Mark) を追加することができます。
次は実装コードです:
import requests from bs4 import BeautifulSoup import csv import codecs # 创建问题列表 questions = [ "2031956566959407839", "785436012916117832", "1265757662946113922", "455270192556513192", "842556478655981450" ] # 创建文件 with open("questions.csv", "w", newline='', encoding='utf-8-sig') as file: writer = csv.writer(file) writer.writerow(['问题', '最佳答案']) # 循环爬取问题和最佳答案 for q in questions: # 根据问题ID拼接URL url = f"https://zhidao.baidu.com/question/{q}.html" # 发送请求 r = requests.get(url) # 解析网页 soup = BeautifulSoup(r.text, "html.parser") # 获取问题 try: question = soup.find("span", class_="ask-title").text except: question = "" # 获取最佳答案 try: answer = soup.find("pre", class_="best-text mb-10").text except: answer = "" # 保存到csv文件 writer.writerow([question, answer])
この記事では、Python を使用して Baidu Web サイトをクロールする方法を紹介しました。リクエストと urllib ライブラリを使用してリクエストを送信する方法、BeautifulSoup ライブラリを使用して Web ページを解析する方法、クロールされた結果を CSV ファイルに保存する方法を学びました。これらの方法により、私たちはインターネット上で簡単にデータを取得し、分析することができます。インターネット時代のビッグデータ解析においてクローラ技術は非常に重要な役割を果たしており、Pythonプログラマーとしては関連知識を学び習得することが重要です。
以上がPython での実践的なクローラー戦闘: Baidu はクローラーを熟知していますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。