インターネットとビッグデータ時代の到来により、ますます多くのデータが動的に生成され、Web ページ上に表示されるようになり、データの収集と処理に新たな課題が生じています。このとき、Web クローラー技術が登場しました。 Webクローラ技術とは、プログラムを書くことでインターネット上の情報を自動的に取得する技術のことを指します。強力なプログラミング言語である Python には、学習が簡単、効率的で使いやすい、クロスプラットフォームであるという利点があり、Web クローラー開発において重要な選択肢となっています。
この記事では、リクエスト モジュール、解析モジュール、ストレージ モジュールなど、Python で一般的に使用される Web クローラー テクノロジを体系的に紹介します。
1. リクエスト モジュール
リクエスト モジュールは Web クローラーの中核であり、ブラウザをシミュレートしてリクエストを送信し、必要なページ コンテンツを取得できます。一般的に使用されるリクエスト モジュールには、urllib、Requests、Selenium などがあります。
urllib は Python に付属する HTTP リクエスト モジュールです。URL に基づいてネットワークから Web ページ データを取得できます。URL エンコード、変更をサポートしています。リクエストヘッダー、投稿、Cookie、その他の機能の。一般的に使用される関数には、urllib.request.urlopen()、urllib.request.urlretrieve()、urllib.request.build_opener() などが含まれます。
urllib.request.urlopen() 関数を通じて Web サイトのソース コードを取得できます。
import urllib.request response = urllib.request.urlopen('http://www.example.com/') source_code = response.read().decode('utf-8') print(source_code)
Requests は Python です。サードパーティのライブラリ。urllib よりもシンプルで使いやすく、Cookie、POST、プロキシなどの機能をサポートしています。一般的に使用される関数には、requests.get()、requests.post()、requests.request() などが含まれます。
requests.get() 関数を通じて応答コンテンツを取得できます。
import requests response = requests.get('http://www.example.com/') source_code = response.text print(source_code)
Selenium は自動テスト ツールであり、以下で使用されます。 Webクローラとは、ブラウザを起動することで人間の操作を模擬したり、JSで動的に生成されたページデータを取得する機能などを実現します。一般的に使用される関数には、selenium.webdriver.Chrome()、selenium.webdriver.Firefox()、selenium.webdriver.PhantomJS() などが含まれます。
Selenium を通じて Web ページのソース コードを取得します:
from selenium import webdriver browser = webdriver.Chrome() # 打开Chrome浏览器 browser.get('http://www.example.com/') source_code = browser.page_source # 获取网页源代码 print(source_code)
2. 解析モジュール
Web ページのソース コードを取得したら、次のステップはファイルを解析することです。 Python で一般的に使用される解析モジュールには、正規表現、BeautifulSoup、PyQuery などがあります。
正規表現は、パターンに従って文字列を照合し、必要なデータを迅速に抽出できる魔法の強力なツールです。 Python の re モジュールを使用して正規表現を呼び出すことができます。
たとえば、Web ページ内のすべてのリンクを抽出します。
import re source_code = """ <!DOCTYPE html> <html> <head> <title>Example</title> </head> <body> <a href="http://www.example.com/">example</a> <a href="http://www.google.com/">google</a> </body> </html> """ pattern = re.compile('<a href="(.*?)">(.*?)</a>') # 匹配所有链接 results = re.findall(pattern, source_code) for result in results: print(result[0], result[1])
Beautiful Soup は、HTML ファイルやファイルを変換できる Python のライブラリです。 XML ファイルはツリー構造に解析され、HTML/XML ファイル内のデータを簡単に取得できます。さまざまなパーサーをサポートしています。一般的に使用されるパーサーは、Python の組み込み html.parser、lxml、および html5lib です。
たとえば、Web ページ内のすべてのリンクを解析します。
from bs4 import BeautifulSoup source_code = """ <!DOCTYPE html> <html> <head> <title>Example</title> </head> <body> <a href="http://www.example.com/">example</a> <a href="http://www.google.com/">google</a> </body> </html> """ soup = BeautifulSoup(source_code, 'html.parser') links = soup.find_all('a') for link in links: print(link.get('href'), link.string)
PyQuery は、HTML ドキュメントを変換する jQuery に似た Python ライブラリです。 jQuery と同様の構造で、Web ページ内の要素は CSS セレクターを通じて直接取得できます。 lxmlライブラリに依存します。
たとえば、Web ページ内のすべてのリンクを解析します:
from pyquery import PyQuery as pq source_code = """ <!DOCTYPE html> <html> <head> <title>Example</title> </head> <body> <a href="http://www.example.com/">example</a> <a href="http://www.google.com/">google</a> </body> </html> """ doc = pq(source_code) links = doc('a') for link in links: print(link.attrib['href'], link.text_content())
3. ストレージ モジュール
必要なデータを取得したら、次のステップはデータを保存することです。ローカルまたはデータベースの中間にあります。 Python で一般的に使用されるストレージ モジュールには、ファイル モジュール、MySQLdb、pymongo などが含まれます。
ファイル モジュールはデータをローカルに保存できます。一般的に使用されるファイル モジュールには、CSV、JSON、Excel などが含まれます。その中でもCSVモジュールは、CSVファイルにデータを書き込むことができる、最もよく使われるファイルモジュールの1つです。
たとえば、データを CSV ファイルに書き込みます。
import csv filename = 'example.csv' data = [['name', 'age', 'gender'], ['bob', 25, 'male'], ['alice', 22, 'female']] with open(filename, 'w', encoding='utf-8', newline='') as f: writer = csv.writer(f) for row in data: writer.writerow(row)
MySQLdb は、Python が MySQL データベースに接続するためのライブラリです。トランザクション、カーソル、その他の機能をサポートします。
たとえば、データを MySQL データベースに保存します:
import MySQLdb conn = MySQLdb.connect(host='localhost', port=3306, user='root', passwd='password', db='example', charset='utf8') cursor = conn.cursor() data = [('bob', 25, 'male'), ('alice', 22, 'female')] sql = "INSERT INTO users (name, age, gender) VALUES (%s, %s, %s)" try: cursor.executemany(sql, data) conn.commit() except: conn.rollback() cursor.close() conn.close()
pymongo は、Python が MongoDB データベースにリンクするためのライブラリです。追加、削除、変更、確認などのさまざまな操作をサポートします。
例: MongoDB データベースにデータを保存します:
import pymongo client = pymongo.MongoClient('mongodb://localhost:27017/') db = client['example'] collection = db['users'] data = [{'name': 'bob', 'age': 25, 'gender': 'male'}, {'name': 'alice', 'age': 22, 'gender': 'female'}] collection.insert_many(data)
4. 概要
Python の Web クローラー テクノロジには、リクエスト モジュール、解析モジュール、ストレージ モジュールなどが含まれます。リクエスト モジュールは Web クローラーのコアであり、解析モジュールはデータを取得するための重要なチャネルであり、ストレージ モジュールはデータを永続化する唯一の方法です。 Python には、Web クローラー開発において、学習が簡単、効率的で使いやすい、クロスプラットフォームであるという利点があり、Web クローラー開発における重要な選択肢となっています。
以上がPythonベースのWebクローラ技術を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。