Dengan kemunculan Internet dan era data besar, semakin banyak data dijana dan dibentangkan secara dinamik pada halaman web, yang membawa cabaran baharu kepada pengumpulan dan pemprosesan data. Pada masa ini, teknologi perangkak web wujud. Teknologi perangkak web merujuk kepada teknologi yang secara automatik mendapatkan maklumat di Internet dengan menulis program. Sebagai bahasa pengaturcaraan yang berkuasa, Python mempunyai kelebihan kerana mudah dipelajari, cekap dan mudah digunakan, dan merentas platform Ia telah menjadi pilihan penting dalam pembangunan perangkak web.
Artikel ini akan memperkenalkan secara sistematik teknologi perangkak web yang biasa digunakan dalam Python, termasuk modul permintaan, modul penghuraian, modul storan, dsb.
1. Modul permintaan
Modul permintaan ialah teras perangkak web. Ia boleh mensimulasikan pelayar untuk menghantar permintaan dan mendapatkan kandungan halaman yang diperlukan. Modul permintaan yang biasa digunakan termasuk urllib, Permintaan dan Selenium.
urllib ialah modul permintaan HTTP yang disertakan dengan Python Ia boleh mendapatkan data halaman web daripada rangkaian berdasarkan URL Ia menyokong pengekodan URL pengepala permintaan, siaran, Kuki dan fungsi lain. Fungsi yang biasa digunakan termasuk urllib.request.urlopen(), urllib.request.urlretrieve(), urllib.request.build_opener(), dsb.
Kod sumber tapak web boleh diperolehi melalui fungsi urllib.request.urlopen() :
import urllib.request response = urllib.request.urlopen('http://www.example.com/') source_code = response.read().decode('utf-8') print(source_code)
Permintaan ialah Python pustaka pihak ketiga Ia lebih ringkas dan mudah digunakan daripada urllib, dan menyokong kuki, POST, proksi dan fungsi lain. Fungsi yang biasa digunakan termasuk requests.get(), requests.post(), requests.request(), dsb.
Kandungan tindak balas boleh diperolehi melalui fungsi requests.get():
import requests response = requests.get('http://www.example.com/') source_code = response.text print(source_code)
Selenium ialah alat ujian automatik dalam perangkak web , ia boleh mensimulasikan operasi manusia dengan memulakan pelayar, dan boleh mencapai fungsi seperti mendapatkan data halaman yang dijana secara dinamik oleh JS. Fungsi yang biasa digunakan termasuk selenium.webdriver.Chrome(), selenium.webdriver.Firefox(), selenium.webdriver.PhantomJS(), dsb.
Dapatkan kod sumber halaman web melalui Selenium:
from selenium import webdriver browser = webdriver.Chrome() # 打开Chrome浏览器 browser.get('http://www.example.com/') source_code = browser.page_source # 获取网页源代码 print(source_code)
2. Modul penghuraian
Selepas mendapat kod sumber halaman web, langkah seterusnya ialah menghuraikan fail. Modul penghuraian yang biasa digunakan dalam Python termasuk ungkapan biasa, BeautifulSoup dan PyQuery.
Ekspresi biasa ialah alat ajaib dan berkuasa yang boleh memadankan rentetan mengikut corak dan mengekstrak data yang diperlukan dengan cepat. Anda boleh menggunakan modul semula dalam Python untuk memanggil ungkapan biasa.
Sebagai contoh, ekstrak semua pautan dalam halaman 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 ialah perpustakaan dalam Python yang boleh menukar fail HTML atau Fail XML dihuraikan ke dalam struktur pokok untuk mendapatkan data dalam fail HTML/XML dengan mudah. Ia menyokong pelbagai parser, yang biasa digunakan ialah html.parser, lxml dan html5lib terbina dalam Python.
Sebagai contoh, untuk menghuraikan semua pautan dalam halaman 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 ialah perpustakaan Python seperti jQuery yang menukar HTML dokumen Ke dalam struktur yang serupa dengan jQuery, elemen dalam halaman web boleh diperolehi terus melalui pemilih CSS. Ia bergantung pada perpustakaan lxml.
Sebagai contoh, huraikan semua pautan dalam halaman 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 Modul storan
Selepas mendapat data yang diperlukan, langkah seterusnya ialah menyimpan data. tempatan atau di tengah pangkalan data. Modul storan yang biasa digunakan dalam Python termasuk modul fail, MySQLdb, pymongo, dll.
Modul fail boleh menyimpan data secara setempat Modul fail yang biasa digunakan termasuk CSV, JSON, Excel, dsb. Antaranya, modul CSV ialah salah satu modul fail yang paling biasa digunakan, yang boleh menulis data ke dalam fail CSV.
Sebagai contoh, tulis data ke fail 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 ialah perpustakaan untuk Python untuk menyambung ke pangkalan data MySQL, yang menyokong transaksi, kursor dan fungsi lain.
Contohnya, simpan data ke dalam pangkalan data 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 ialah perpustakaan untuk Python untuk dipautkan ke pangkalan data MongoDB menyokong pelbagai Operasi, seperti menambah, memadam, mengubah suai, menyemak, dll.
Sebagai contoh, simpan data dalam pangkalan data 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. Ringkasan
Teknologi perangkak web dalam Python termasuk modul permintaan, modul penghuraian dan modul storan, dsb. Antara mereka, modul permintaan adalah teras perangkak web, modul penghuraian ialah saluran penting untuk mendapatkan data, dan modul storan adalah satu-satunya cara untuk mengekalkan data. Python mempunyai kelebihan kerana mudah dipelajari, cekap dan mudah digunakan, dan merentas platform dalam pembangunan perangkak web, dan telah menjadi pilihan penting dalam pembangunan perangkak web.
Atas ialah kandungan terperinci Penjelasan terperinci tentang teknologi perangkak web berasaskan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!