>백엔드 개발 >파이썬 튜토리얼 >Python으로 구현한 실제 크롤러 전투: 58 도시 크롤러

Python으로 구현한 실제 크롤러 전투: 58 도시 크롤러

WBOY
WBOY원래의
2023-06-10 11:36:072892검색

인터넷의 급속한 발전으로 사람들은 다양한 채널을 통해 필요한 정보를 얻을 수 있습니다. 정보화 시대에 웹 크롤러는 없어서는 안 될 도구가 되었습니다. 이번 글에서는 Python-58 city Crawler의 실제 크롤러를 소개하겠습니다.

1. 크롤러 소개

웹 크롤러는 HTTP 프로토콜을 통해 웹 페이지에 액세스하고 필요한 데이터를 추출하는 자동화된 프로그램입니다. 인터넷에는 많은 데이터가 있지만 API를 통해 모든 데이터를 사용할 수 있는 것은 아닙니다. 따라서 크롤러는 데이터를 얻는 중요한 수단이 되었습니다.

크롤러의 작업 흐름은 일반적으로 세 단계로 나뉩니다.

  1. 웹 페이지 다운로드: 일반적으로 요청 라이브러리를 사용하여 HTTP 프로토콜을 통해 웹 페이지를 다운로드합니다.
  2. 웹 페이지 구문 분석: 다운로드한 웹 페이지를 구문 분석하고 필요한 내용을 추출합니다. 데이터는 일반적으로 BeautifulSoup4 라이브러리를 사용합니다. 구현
  3. 저장 데이터: 필요한 데이터를 로컬 또는 데이터베이스에 저장합니다.

2. 실용적인 크롤러 전투: 58 시티 크롤러

58 시티는 국가별 정보 사이트로, 사용자가 제품 정보, 임대 정보, 채용 정보 등을 게시할 수 있습니다. 이번 글에서는 58 city 크롤러를 Python으로 구현하여 임대 정보를 얻는 방법을 소개하겠습니다.

  1. 웹사이트 분석

크롤링하기 전에 58.com 웹사이트를 분석해야 합니다. 렌탈 페이지에 들어가 원하시는 도시를 선택하시면 해당 URL에 도시 정보가 포함되어 있는 것을 확인하실 수 있습니다. 예를 들어 대여 페이지의 URL은 "https://[city pinyin].58.com/zufang/"입니다. URL의 도시 병음을 수정하면 다른 도시의 임대 정보를 크롤링할 수 있습니다.

대여 페이지를 열면 페이지 구조가 검색창과 임대 정보 목록 두 부분으로 나누어져 있는 것을 확인할 수 있습니다. 임대정보 목록에는 각 임대정보의 명칭, 임대료, 면적, 지리적 위치, 주택유형 및 기타 정보가 포함됩니다.

  1. 크롤러 작성

58.com 웹사이트를 분석한 후 크롤러를 작성하면 됩니다. 먼저 요청과 BeautifulSoup4 라이브러리를 가져와야 합니다. 코드는 다음과 같습니다.

import requests
from bs4 import BeautifulSoup

다음으로, 각 도시의 임대 정보를 얻으려면 올바른 URL을 구성해야 합니다. 코드는 다음과 같습니다.

city_pinyin = "bj"
url = "https://{}.58.com/zufang/".format(city_pinyin)

올바른 URL을 얻은 후 요청 라이브러리를 사용하여 페이지의 HTML 소스 코드를 얻을 수 있습니다. 코드는 다음과 같습니다.

response = requests.get(url)
html = response.text

이제 대여 페이지의 HTML 소스 코드를 얻었으므로 BeautifulSoup4 라이브러리를 사용하여 HTML 소스 코드를 구문 분석하고 필요한 데이터를 추출해야 합니다. 페이지 구조에 따르면 임대 정보 목록은 "list-wrap" 클래스의 div 태그에 포함되어 있습니다. BeautifulSoup4 라이브러리의 find_all() 함수를 통해 "list-wrap" 클래스가 있는 모든 div 태그를 얻을 수 있습니다. 코드는 다음과 같습니다.

soup = BeautifulSoup(html, "lxml")
div_list = soup.find_all("div", class_="list-wrap")

div 태그를 얻은 후 태그 목록을 순회하여 각 임대 정보의 데이터를 추출할 수 있습니다. 페이지 구조에 따르면, 임대 정보의 각 부분은 제목, 임대료, 지역, 지리적 위치, 주택 유형 및 기타 정보를 포함하여 클래스 "des"가 있는 div 태그에 포함되어 있습니다. 코드는 다음과 같습니다:

for div in div_list:
    info_list = div.find_all("div", class_="des")
    for info in info_list:
        # 提取需要的租房数据

for 루프에서 find_all() 함수를 다시 사용하여 "des" 클래스가 있는 모든 div 태그를 가져왔습니다. 다음으로 이러한 div 태그를 탐색하여 필요한 임대 데이터를 추출해야 합니다. 예를 들어 임대 정보의 제목과 기타 정보를 추출하는 코드는 다음과 같습니다.

title = info.find("a", class_="t").text
rent = info.find("b").text
size = info.find_all("p")[0].text.split("/")[1]
address = info.find_all("p")[0].text.split("/")[0]
house_type = info.find_all("p")[1].text

위 코드를 통해 58개 도시 임대 페이지의 각 임대 정보를 성공적으로 얻어 변수에 캡슐화했습니다. 다음으로 각 렌털 정보의 변수를 출력하여 콘솔에 출력되는 데이터를 확인할 수 있습니다. 예:

print("标题:{}".format(title))
print("租金:{}".format(rent))
print("面积:{}".format(size))
print("地理位置:{}".format(address))
print("房屋类型:{}".format(house_type))

3. 요약

이 글에서는 Python의 실제 크롤러인 58 city Crawler를 소개합니다. 크롤러를 구현하기 전에 먼저 58개 도시 임대 페이지를 분석하여 임대 정보를 얻을 수 있는 URL과 추출해야 할 데이터를 결정했습니다. 그런 다음 요청과 BeautifulSoup4 라이브러리를 사용하여 크롤러를 구현했습니다. 크롤러를 통해 58개 도시 임대 페이지의 임대 정보를 성공적으로 획득하고 이를 변수로 캡슐화하여 후속 데이터 처리를 용이하게 했습니다.

위 내용은 Python으로 구현한 실제 크롤러 전투: 58 도시 크롤러의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.