기술나눔

Python 크롤러 및 출력

2024-07-12

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

1. Python 크롤러 및 출력 예

다음은 특정 웹페이지를 크롤링하는 Python으로 작성된 간단한 웹 크롤러의 예입니다(예:https://example.com , 그러나 실제 사용시에는 크롤링이 허용된 실제 웹사이트의 제목(제목)으로 대체하여 인쇄해야 한다는 점 참고하시기 바랍니다. 실제 웹사이트에 직접 접속하여 스크랩하는 행위에는 저작권 및 법적 문제가 발생할 수 있으므로 여기서는 개념적인 예만 제시합니다.

이 작업을 수행하기 위해 우리는 Python의requestsHTTP 요청을 보내고 사용하는 라이브러리BeautifulSoup HTML 콘텐츠를 구문 분석하는 라이브러리입니다. 아직 이러한 라이브러리를 설치하지 않았다면 pip를 통해 설치할 수 있습니다.

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

전체 코드 예제는 다음과 같습니다.

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

알아채다

(1) 원인https://example.com예를 들어 자리 표시자이므로 실행 시 크롤링을 허용하는 유효한 웹페이지 URL로 바꿔야 합니다.

(2) 크롤러는 실행 시 대상 웹사이트의 요구 사항을 준수해야 합니다.robots.txt이 문서는 웹사이트의 저작권 및 접근 제한 사항을 규정하고 있습니다.

(3) 일부 웹사이트에는 사용자 에이전트 확인, 빈도 제한 등과 같은 크롤러 방지 메커니즘이 설정되어 있을 수 있습니다. 요청 헤더(예:User-Agent) 또는 프록시와 같은 방법을 사용하여 이러한 제한을 우회할 수 있습니다.

(4) 더 복잡한 웹 페이지 구조나 더 고급 데이터 캡처 요구 사항의 경우 HTML, CSS 선택기, XPath 및 네트워크 요청에 대해 더 자세히 배워야 할 수도 있습니다.

2. 더 자세한 코드 예시

아래는 좀 더 자세한 Python 크롤러 코드 예시입니다. 이번에는requestsHTTP 요청을 보내고 사용하는 라이브러리BeautifulSoup실제 웹사이트를 크롤링하기 위해 HTML 콘텐츠를 구문 분석하는 라이브러리(예:https://www.wikipedia.org예를 들어 실제 크롤링은 웹사이트의robots.txt규정 및 저작권 정책).

먼저, 설치되었는지 확인하세요.requests그리고beautifulsoup4 도서관. 설치되지 않은 경우 pip를 사용하여 설치합니다.

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

그런 다음 다음 코드를 사용하여 Wikipedia 홈 페이지의 제목을 가져와 인쇄할 수 있습니다.

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

이 코드는 먼저 요청 헤더(headers), 여기에는User-Agent 필드에서는 실제 브라우저 액세스를 시뮬레이션하기 위한 것입니다. 일부 웹사이트에서는 크롤러 액세스를 방지하기 위해 요청 헤더를 확인하기 때문입니다. 그런 다음 지정된 URL로 GET 요청을 보내고 BeautifulSoup을 사용하여 반환된 HTML 콘텐츠를 구문 분석합니다.다음으로 HTML을 찾습니다.<title> 태그를 지정하고 해당 텍스트 내용을 웹 페이지 제목으로 추출합니다. 마지막으로 제목을 콘솔에 인쇄합니다.

이 예에서는 Wikipedia를 예로 사용하지만 실제 프로젝트에서는 항상 대상 웹사이트의robots.txt당사의 크롤링 관행이 합법적이고 윤리적인지 확인하기 위한 문서 및 저작권 정책입니다.