informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Di bawah ini adalah contoh perayap web sederhana yang ditulis dengan Python yang akan merayapi laman web tertentu (misalnya, katakanlahhttps://example.com
, namun perlu diketahui bahwa dalam penggunaan sebenarnya kami perlu menggantinya dengan judul (Judul) situs web asli yang boleh dirayapi) dan mencetaknya. Karena mengakses dan menyalin situs web nyata secara langsung mungkin melibatkan masalah hak cipta dan hukum, kami hanya memberikan contoh konseptual di sini.
Untuk menyelesaikan tugas ini kita akan menggunakan Pythonrequests
perpustakaan untuk mengirim permintaan HTTP dan digunakanBeautifulSoup
Perpustakaan untuk mengurai konten HTML. Jika kita belum menginstal perpustakaan ini, kita dapat menginstalnya melalui pip:
- bash复制代码
-
- pip install requests beautifulsoup4
Berikut contoh kode lengkapnya:
- # 导入必要的库
- import requests
- from bs4 import BeautifulSoup
-
- def fetch_website_title(url):
- """
- 抓取指定网页的标题并返回。
-
- 参数:
- url (str): 需要抓取的网页的URL。
-
- 返回:
- str: 网页的标题,如果抓取失败则返回None。
- """
- try:
- # 发送HTTP GET请求
- response = requests.get(url)
-
- # 检查请求是否成功
- if response.status_code == 200:
- # 使用BeautifulSoup解析HTML内容
- soup = BeautifulSoup(response.text, 'html.parser')
-
- # 查找网页的<title>标签
- title_tag = soup.find('title')
-
- # 如果找到<title>标签,则返回其内容
- if title_tag:
- return title_tag.get_text(strip=True)
- else:
- return "No title found."
- else:
- return f"Failed to retrieve the webpage. Status code: {response.status_code}"
- except requests.RequestException as e:
- return f"Error fetching the webpage: {e}"
-
- # 示例URL(请替换为我们要抓取的网页的URL)
- url = 'https://example.com'
-
- # 调用函数并打印结果
- title = fetch_website_title(url)
- print(f"The title of the webpage is: {title}")
Melihat:
(1) Karenahttps://example.com
adalah placeholder misalnya, jadi kita perlu menggantinya dengan URL halaman web valid yang memungkinkan perayapan saat dijalankan.
(2) Perayap harus mematuhi persyaratan situs web target saat dijalankanrobots.txt
Dokumen tersebut menetapkan penghormatan terhadap hak cipta dan pembatasan akses situs web.
(3) Beberapa situs web mungkin memiliki mekanisme anti-perayapan yang diatur, seperti pemeriksaan Agen-Pengguna, batas frekuensi, dll. Kami mungkin perlu mengubah header permintaan kami (sepertiUser-Agent
) atau gunakan metode seperti proxy untuk melewati batasan ini.
(4) Untuk struktur halaman web yang lebih kompleks atau persyaratan pengambilan data yang lebih canggih, kita mungkin perlu mempelajari lebih lanjut tentang HTML, pemilih CSS, XPath, dan permintaan jaringan.
Di bawah ini adalah contoh kode crawler Python yang lebih detail, kali ini akan saya gunakanrequests
perpustakaan untuk mengirim permintaan HTTP dan digunakanBeautifulSoup
perpustakaan untuk mengurai konten HTML untuk merayapi situs web nyata (misalnya, kami menggunakanhttps://www.wikipedia.org
Sebagai contoh, namun perlu diingat bahwa perayapan sebenarnya harus mematuhi situs webrobots.txt
peraturan dan kebijakan hak cipta).
Pertama pastikan kita sudah menginstallnyarequests
Danbeautifulsoup4
perpustakaan. Jika belum diinstal, gunakan pip untuk menginstalnya:
- bash复制代码
-
- pip install requests beautifulsoup4
Kita kemudian dapat menggunakan kode berikut untuk mengambil dan mencetak judul halaman beranda Wikipedia:
- # 导入必要的库
- import requests
- from bs4 import BeautifulSoup
-
- def fetch_and_parse_title(url):
- """
- 发送HTTP GET请求到指定的URL,解析HTML内容,并返回网页的标题。
-
- 参数:
- url (str): 需要抓取的网页的URL。
-
- 返回:
- str: 网页的标题,如果抓取或解析失败则返回相应的错误消息。
- """
- try:
- # 发送HTTP GET请求
- headers = {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
- } # 设置User-Agent来模拟浏览器访问
- response = requests.get(url, headers=headers)
-
- # 检查请求是否成功
- if response.status_code == 200:
- # 使用BeautifulSoup解析HTML内容
- soup = BeautifulSoup(response.text, 'html.parser')
-
- # 查找网页的<title>标签
- title_tag = soup.find('title')
-
- # 提取并返回标题内容
- if title_tag:
- return title_tag.get_text(strip=True)
- else:
- return "No title found in the webpage."
- else:
- return f"Failed to retrieve the webpage. Status code: {response.status_code}"
- except requests.RequestException as e:
- return f"Error fetching the webpage: {e}"
-
- # 示例URL(这里使用Wikipedia的主页作为示例)
- url = 'https://www.wikipedia.org'
-
- # 调用函数并打印结果
- title = fetch_and_parse_title(url)
- print(f"The title of the webpage is: {title}")
Kode ini pertama-tama menetapkan header permintaan (headers
), yang berisi aUser-Agent
lapangan, ini untuk mensimulasikan akses browser yang sebenarnya, karena beberapa situs web akan memeriksa header permintaan untuk mencegah akses crawler. Kemudian mengirimkan permintaan GET ke URL yang ditentukan dan menggunakan BeautifulSoup untuk mengurai konten HTML yang dikembalikan.Selanjutnya, mencari HTML<title>
tag dan ekstrak konten teksnya sebagai judul halaman web. Terakhir, ia mencetak judul ke konsol.
Harap dicatat bahwa meskipun contoh ini menggunakan Wikipedia sebagai contoh, dalam proyek nyata kita harus selalu mematuhi situs web targetrobots.txt
dokumentasi dan kebijakan hak cipta untuk memastikan praktik perayapan kami sah dan etis.