2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Alla on esimerkki yksinkertaisesta Pythonilla kirjoitetusta indeksointirobotista, joka indeksoi tietyn verkkosivun (esim.https://example.com
, mutta huomaa, että todellisessa käytössä meidän on korvattava se todellisen indeksoitavan verkkosivuston otsikolla (Title) ja tulostettava se. Koska oikeiden verkkosivustojen suora avaaminen ja poistaminen voi sisältää tekijänoikeus- ja oikeudellisia ongelmia, tarjoamme tässä vain käsitteellisen esimerkin.
Tämän tehtävän suorittamiseksi käytämme Pythoniarequests
kirjasto HTTP-pyyntöjen lähettämiseen ja käyttöönBeautifulSoup
Kirjasto HTML-sisällön jäsentämiseen. Jos emme ole vielä asentaneet näitä kirjastoja, voimme asentaa ne pip:n kautta:
- bash复制代码
-
- pip install requests beautifulsoup4
Tässä on täydellinen koodiesimerkki:
- # 导入必要的库
- 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}")
Ilmoitus:
(1) Johtuenhttps://example.com
on esimerkiksi paikkamerkki, joten meidän on korvattava se kelvollisella verkkosivun URL-osoitteella, joka sallii indeksoinnin suorituksen aikana.
(2) Indeksointirobotin tulee noudattaa kohdesivuston vaatimuksia suoritettaessarobots.txt
Asiakirja velvoittaa kunnioittamaan sivuston tekijänoikeuksia ja pääsyrajoituksia.
(3) Joillakin sivustoilla voi olla indeksoinnin estomekanismeja, kuten käyttäjäagentin tarkistus, taajuusrajoitus jne. Saatamme joutua muokkaamaan pyyntömme otsikoita (esim.User-Agent
) tai käytä menetelmiä, kuten välityspalvelimia, näiden rajoitusten ohittamiseksi.
(4) Monimutkaisempia verkkosivurakenteita tai kehittyneempiä tiedonkeruuvaatimuksia varten meidän on ehkä opittava lisää HTML:stä, CSS-valitsimista, XPathista ja verkkopyynnöistä.
Alla on yksityiskohtaisempi Python-indeksointikoodiesimerkki, tällä kertaa käytänrequests
kirjasto HTTP-pyyntöjen lähettämiseen ja käyttöönBeautifulSoup
kirjasto jäsentääksesi HTML-sisältöä todellisen verkkosivuston indeksoimiseksi (käytämme esimerkiksihttps://www.wikipedia.org
Esimerkkinä, mutta huomaa, että todellisen indeksoinnin tulee olla verkkosivuston mukainenrobots.txt
säännökset ja tekijänoikeuspolitiikka).
Varmista ensin, että olemme asentaneetrequests
jabeautifulsoup4
kirjasto. Jos sitä ei ole asennettu, asenna se pip:llä:
- bash复制代码
-
- pip install requests beautifulsoup4
Voimme sitten käyttää seuraavaa koodia tarttuaksemme ja tulostaaksemme Wikipedian kotisivun otsikon:
- # 导入必要的库
- 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}")
Tämä koodi asettaa ensin pyynnön otsikon (headers
), joka sisältää aUser-Agent
-kentässä, tämä simuloi todellista selaimen käyttöä, koska jotkut verkkosivustot tarkistavat pyynnön otsikon estääkseen indeksointirobotin käytön. Sitten se lähettää GET-pyynnön määritettyyn URL-osoitteeseen ja jäsentää palautetun HTML-sisällön BeautifulSoupin avulla.Seuraavaksi se etsii HTML-koodia<title>
-tunnisteen ja poimia sen tekstisisällön verkkosivun otsikoksi. Lopuksi se tulostaa otsikon konsoliin.
Huomaa, että vaikka tässä esimerkissä käytetään esimerkkinä Wikipediaa, todellisessa projektissa meidän tulee aina noudattaa kohdesivustonrobots.txt
dokumentaatiota ja tekijänoikeuskäytäntöjä varmistaaksemme, että indeksointikäytäntömme ovat laillisia ja eettisiä.