Partage de technologie

Robot d'exploration et sortie Python

2024-07-12

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

1. Robot d'exploration Python et exemple de sortie

Vous trouverez ci-dessous un exemple de robot d'exploration Web simple écrit en Python qui explorera une certaine page Web (par exemple, disonshttps://example.com , mais veuillez noter que dans l'utilisation réelle, nous devons le remplacer par le titre (Titre) d'un vrai site Web dont l'exploration est autorisée) et l'imprimer. Étant donné que l’accès direct et la suppression de sites Web réels peuvent impliquer des problèmes de droit d’auteur et juridiques, nous ne fournissons ici qu’un exemple conceptuel.

Pour accomplir cette tâche, nous utiliserons Pythonrequestsbibliothèque pour envoyer des requêtes HTTP et utiliserBeautifulSoup Bibliothèque pour analyser le contenu HTML. Si nous n'avons pas encore installé ces bibliothèques, nous pouvons les installer via pip :

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

Voici l'exemple de code complet :

  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}")

Avis

(1) En raison dehttps://example.comest un espace réservé par exemple, nous devons donc le remplacer par une URL de page Web valide qui permet l'exploration lors de l'exécution.

(2) Le robot d'exploration doit se conformer aux exigences du site Web cible lors de son exécution.robots.txtLe document stipule le respect des droits d'auteur et des restrictions d'accès au site Internet.

(3) Certains sites Web peuvent avoir mis en place des mécanismes anti-crawler, tels que la vérification de l'agent utilisateur, la limite de fréquence, etc. Nous devrons peut-être modifier nos en-têtes de requête (tels queUser-Agent) ou utilisez des méthodes telles que des proxys pour contourner ces restrictions.

(4) Pour des structures de pages Web plus complexes ou des exigences de capture de données plus avancées, nous devrons peut-être en savoir plus sur HTML, les sélecteurs CSS, XPath et les requêtes réseau.

2. Exemples de code plus détaillés

Vous trouverez ci-dessous un exemple de code de robot d'exploration Python plus détaillé, cette fois j'utiliserairequestsbibliothèque pour envoyer des requêtes HTTP et utiliserBeautifulSoupbibliothèque pour analyser le contenu HTML afin d'explorer un vrai site Web (par exemple, nous utilisonshttps://www.wikipedia.orgA titre d'exemple, mais veuillez noter que l'exploration réelle doit être conforme aux exigences du site Web.robots.txtréglementations et politique de droits d’auteur).

Tout d'abord, assurez-vous que nous avons installérequestsetbeautifulsoup4 bibliothèque. S'il n'est pas installé, utilisez pip pour l'installer :

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

Nous pouvons ensuite utiliser le code suivant pour récupérer et imprimer le titre de la page d'accueil de Wikipédia :

  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}")

Ce code définit d'abord un en-tête de requête (headers), qui contient unUser-Agent champ, il s'agit de simuler un véritable accès au navigateur, car certains sites Web vérifieront l'en-tête de la requête pour empêcher l'accès du robot. Il envoie ensuite une requête GET à l'URL spécifiée et utilise BeautifulSoup pour analyser le contenu HTML renvoyé.Ensuite, il recherche le code HTML<title> baliser et extraire son contenu textuel comme titre de la page Web. Enfin, il imprime le titre sur la console.

Veuillez noter que même si cet exemple utilise Wikipédia, dans un projet réel, nous devons toujours respecter les spécifications du site Web cible.robots.txtde documentation et de droits d'auteur pour garantir que nos pratiques d'exploration sont légales et éthiques.