le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Di seguito è riportato un esempio di un semplice web crawler scritto in Python che eseguirà la scansione di una determinata pagina web (ad esempio, diciamohttps://example.com
, ma tieni presente che nell'uso reale dobbiamo sostituirlo con il titolo (Titolo) di un sito web reale di cui è consentita la scansione) e stamparlo. Poiché l'accesso diretto e lo scraping di siti Web reali può comportare problemi di copyright e legali, qui forniamo solo un esempio concettuale.
Per realizzare questo compito utilizzeremo Pythonrequests
libreria per inviare richieste HTTP e utilizzareBeautifulSoup
Libreria per analizzare il contenuto HTML. Se non abbiamo ancora installato queste librerie, possiamo installarle tramite pip:
- bash复制代码
-
- pip install requests beautifulsoup4
Ecco l'esempio di codice completo:
- # 导入必要的库
- 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}")
Avviso:
(1) A causa dihttps://example.com
è un segnaposto, ad esempio, quindi dobbiamo sostituirlo con un URL di pagina Web valido che consenta la scansione durante l'esecuzione.
(2) Il crawler deve essere conforme ai requisiti del sito Web di destinazione durante l'esecuzionerobots.txt
Il documento prevede il rispetto dei diritti d'autore e le restrizioni di accesso al sito web.
(3) Alcuni siti web potrebbero avere meccanismi anti-crawler impostati, come il controllo dello User-Agent, il limite di frequenza, ecc. Potrebbe essere necessario modificare le nostre intestazioni di richiesta (comeUser-Agent
) o utilizzare metodi come i proxy per aggirare queste restrizioni.
(4) Per strutture di pagine Web più complesse o requisiti di acquisizione dati più avanzati, potremmo aver bisogno di saperne di più su HTML, selettori CSS, XPath e richieste di rete.
Di seguito è riportato un esempio di codice crawler Python più dettagliato, che utilizzerò questa voltarequests
libreria per inviare richieste HTTP e utilizzareBeautifulSoup
libreria per analizzare il contenuto HTML per eseguire la scansione di un sito Web reale (ad esempio, utilizziamohttps://www.wikipedia.org
Ad esempio, tieni presente che la scansione effettiva deve essere conforme a quella del sito webrobots.txt
regolamenti e politica sul copyright).
Innanzitutto, assicurati di averlo installatorequests
Ebeautifulsoup4
biblioteca. Se non è installato, usa pip per installarlo:
- bash复制代码
-
- pip install requests beautifulsoup4
Possiamo quindi utilizzare il seguente codice per catturare e stampare il titolo della home page di 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}")
Questo codice imposta innanzitutto un'intestazione della richiesta (headers
), che contiene aUser-Agent
campo, questo serve per simulare un accesso reale dal browser, perché alcuni siti web controlleranno l'intestazione della richiesta per impedire l'accesso del crawler. Invia quindi una richiesta GET all'URL specificato e utilizza BeautifulSoup per analizzare il contenuto HTML restituito.Successivamente, cerca l'HTML<title>
tag ed estrarne il contenuto testuale come titolo della pagina web. Infine, stampa il titolo sulla console.
Tieni presente che sebbene questo esempio utilizzi Wikipedia come esempio, in un progetto reale dovremmo sempre aderire al sito Web di destinazionerobots.txt
documentazione e politiche sul copyright per garantire che le nostre pratiche di scansione siano legali ed etiche.