Teknologian jakaminen

Python-indeksointirobotti ja -tulostus

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Python-indeksointirobotti ja tulosesimerkki

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 Pythoniarequestskirjasto 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:

  1. bash复制代码
  2. pip install requests beautifulsoup4

Tässä on täydellinen koodiesimerkki:

  1. # 导入必要的库
  2. import requests
  3. from bs4 import BeautifulSoup
  4. def fetch_website_title(url):
  5. """
  6. 抓取指定网页的标题并返回。
  7. 参数:
  8. url (str): 需要抓取的网页的URL。
  9. 返回:
  10. str: 网页的标题,如果抓取失败则返回None。
  11. """
  12. try:
  13. # 发送HTTP GET请求
  14. response = requests.get(url)
  15. # 检查请求是否成功
  16. if response.status_code == 200:
  17. # 使用BeautifulSoup解析HTML内容
  18. soup = BeautifulSoup(response.text, 'html.parser')
  19. # 查找网页的<title>标签
  20. title_tag = soup.find('title')
  21. # 如果找到<title>标签,则返回其内容
  22. if title_tag:
  23. return title_tag.get_text(strip=True)
  24. else:
  25. return "No title found."
  26. else:
  27. return f"Failed to retrieve the webpage. Status code: {response.status_code}"
  28. except requests.RequestException as e:
  29. return f"Error fetching the webpage: {e}"
  30. # 示例URL(请替换为我们要抓取的网页的URL)
  31. url = 'https://example.com'
  32. # 调用函数并打印结果
  33. title = fetch_website_title(url)
  34. print(f"The title of the webpage is: {title}")

Ilmoitus

(1) Johtuenhttps://example.comon esimerkiksi paikkamerkki, joten meidän on korvattava se kelvollisella verkkosivun URL-osoitteella, joka sallii indeksoinnin suorituksen aikana.

(2) Indeksointirobotin tulee noudattaa kohdesivuston vaatimuksia suoritettaessarobots.txtAsiakirja 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ä.

2. Tarkempia koodiesimerkkejä

Alla on yksityiskohtaisempi Python-indeksointikoodiesimerkki, tällä kertaa käytänrequestskirjasto HTTP-pyyntöjen lähettämiseen ja käyttöönBeautifulSoupkirjasto jäsentääksesi HTML-sisältöä todellisen verkkosivuston indeksoimiseksi (käytämme esimerkiksihttps://www.wikipedia.orgEsimerkkinä, mutta huomaa, että todellisen indeksoinnin tulee olla verkkosivuston mukainenrobots.txtsäännökset ja tekijänoikeuspolitiikka).

Varmista ensin, että olemme asentaneetrequestsjabeautifulsoup4 kirjasto. Jos sitä ei ole asennettu, asenna se pip:llä:

  1. bash复制代码
  2. pip install requests beautifulsoup4

Voimme sitten käyttää seuraavaa koodia tarttuaksemme ja tulostaaksemme Wikipedian kotisivun otsikon:

  1. # 导入必要的库  
  2. import requests  
  3. from bs4 import BeautifulSoup  
  4.  
  5. def fetch_and_parse_title(url):  
  6.    """  
  7.   发送HTTP GET请求到指定的URL,解析HTML内容,并返回网页的标题。  
  8.  
  9.   参数:  
  10.   url (str): 需要抓取的网页的URL。  
  11.  
  12.   返回:  
  13.   str: 网页的标题,如果抓取或解析失败则返回相应的错误消息。  
  14.   """  
  15.    try:  
  16.        # 发送HTTP GET请求  
  17.        headers = {  
  18.            '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'  
  19.       }  # 设置User-Agent来模拟浏览器访问  
  20.        response = requests.get(url, headers=headers)  
  21.  
  22.        # 检查请求是否成功  
  23.        if response.status_code == 200:  
  24.            # 使用BeautifulSoup解析HTML内容  
  25.            soup = BeautifulSoup(response.text, 'html.parser')  
  26.  
  27.            # 查找网页的<title>标签  
  28.            title_tag = soup.find('title')  
  29.  
  30.            # 提取并返回标题内容  
  31.            if title_tag:  
  32.                return title_tag.get_text(strip=True)  
  33.            else:  
  34.                return "No title found in the webpage."  
  35.        else:  
  36.            return f"Failed to retrieve the webpage. Status code: {response.status_code}"  
  37.    except requests.RequestException as e:  
  38.        return f"Error fetching the webpage: {e}"  
  39.  
  40. # 示例URL(这里使用Wikipedia的主页作为示例)  
  41. url = 'https://www.wikipedia.org'  
  42.  
  43. # 调用函数并打印结果  
  44. title = fetch_and_parse_title(url)  
  45. 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.txtdokumentaatiota ja tekijänoikeuskäytäntöjä varmistaaksemme, että indeksointikäytäntömme ovat laillisia ja eettisiä.