python 안주 객 중고 주택 사이트 데이터 추출(실례 설명)

장난

하하,지금부터 본 격 적 으로 파충류 글 씨 를 쓰기 시작 합 니 다.먼저,올 라 갈 사이트 의 구 조 를 분석 해 야 합 니 다.하남성 학생 으로서 정저 우의 중고 주택 정 보 를 보 세 요!
위의 이 페이지 에서 우 리 는 하나하나 의 주택 공급 원 정 보 를 볼 수 있 습 니 다.그 중에서 우 리 는 무엇 을 발 견 했 습 니까?정저 우의 중고 주택 도 이렇게 비 싼 것 을 발 견 했 습 니 다.곧 졸업 할 학생 인 개 로 서 는 건 드 리 지 못 합 니 다.건 드 리 지 못 합 니 다.

역시 본문!!!위 에서 홈 페이지 의 한 줄 한 줄 방 정 보 를 볼 수 있 습 니 다.클릭 하면 다음 과 같 습 니 다.

주택 공급 원 에 대한 상세 한 정보.OK!그러면 우 리 는 무엇 을 해 야 합 니까?바로 정저 우 이 지역 의 중고 주택 공급 원 정 보 를 모두 손 에 넣 을 수 있 고 데이터 베이스 에 저장 할 수 있 습 니 다.무엇 을 할 수 있 습 니까?지리 인 으로서 쓸모 가 있 습 니 다.이번 에는 말 하지 않 겠 습 니 다.본 격 적 으로 시작 하 겠 습 니 다.먼저 저 는 python 3.6 중의 requests,BeautifulSoup 모듈 로 페이지 를 올 라 갑 니 다.우선 requests 모듈 에서 요청:

#       
header = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'
}
# url  
url = 'https://zhengzhou.anjuke.com/sale/'
response = requests.get(url, headers=header)
print(response.text)
실행 하면 이 사이트 의 html 코드 를 얻 을 수 있 습 니 다.
분석 을 통 해 모든 주택 원 이 class="list-item"의 li 라벨 에 있 음 을 알 수 있 습 니 다.그러면 우 리 는 BeautifulSoup 가방 에 따라 추출 할 수 있 습 니 다.

#   BeautifulSoup                  
soup = BeautifulSoup(response.text, 'html.parser')
result_li = soup.find_all('li', {'class': 'list-item'})
for i in result_li:
  print(i)
인쇄 를 통 해 코드 의 양 을 더욱 줄 일 수 있 습 니 다.자,계속 추출 하 세 요.

#   BeautifulSoup                  
soup = BeautifulSoup(response.text, 'html.parser')
result_li = soup.find_all('li', {'class': 'list-item'})
#                
for i in result_li:
  #   BeautifulSoup         ,      
  page_url = str(i)
  soup = BeautifulSoup(page_url, 'html.parser')
  #     class        ,          
  result_href = soup.find_all('a', {'class': 'houseListTitle'})[0]
  print(result_href.attrs['href'])
이렇게 하면 우 리 는 하나하나 url 을 볼 수 있 습 니 다. 을 좋아 하 시 죠?
자,정상 적 인 논리 에 따라 페이지 에 들 어가 상세 한 페이지 를 분석 해 야 합 니 다.그러나 오 른 후에 다음 페이지 를 어떻게 오 르 는 지 분석 해 야 합 니 다.그래서 우 리 는 먼저 이 페이지 에 다음 페이지 가 있 는 지 분석 해 야 합 니 다.

같은 방법 으로 다음 페이지 가 똑 같이 간단 하 다 는 것 을 알 수 있다.그러면 우 리 는 원래 의 레 시 피 원래 의 맛 에 따라 계속 할 수 있다.

#         
result_next_page = soup.find_all('a', {'class': 'aNxt'})
if len(result_next_page) != 0:
  print(result_next_page[0].attrs['href'])
else:
  print('      ')
다음 페이지 가 존재 할 때 웹 페이지 에 a 태그 가 있 기 때문에 없 으 면 i 태그 가 되 기 때문에 이런 것 이 좋 습 니 다.따라서 우 리 는 이 를 하나의 함수 로 포장 할 수 있 습 니 다.

import requests
from bs4 import BeautifulSoup

#       
header = {
  'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'
}

def get_page(url):
  response = requests.get(url, headers=header)

  #   BeautifulSoup                  
  soup = BeautifulSoup(response.text, 'html.parser')
  result_li = soup.find_all('li', {'class': 'list-item'})

  #         
  result_next_page = soup.find_all('a', {'class': 'aNxt'})
  if len(result_next_page) != 0:
    #       
    get_page(result_next_page[0].attrs['href'])
  else:
    print('      ')

  #                
  for i in result_li:
    #   BeautifulSoup         ,      
    page_url = str(i)
    soup = BeautifulSoup(page_url, 'html.parser')
    #     class        ,          
    result_href = soup.find_all('a', {'class': 'houseListTitle'})[0]
    #      ,                  
    print(result_href.attrs['href'])


if __name__ == '__main__':
  # url  
  url = 'https://zhengzhou.anjuke.com/sale/'
  #         
  get_page(url)
자,그럼 자세 한 페이지 를 찾 아 보 겠 습 니 다.
아,왜 걸핏하면 전기 가 끊 겨?대학의 구덩이 야,먼저 결 과 를 붙 이 고 한가 하면 보충 하고 있어.

import requests
from bs4 import BeautifulSoup

#       
header = {
  'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'
}

def get_page(url):
  response = requests.get(url, headers=header)

  #   BeautifulSoup                  
  soup_idex = BeautifulSoup(response.text, 'html.parser')
  result_li = soup_idex.find_all('li', {'class': 'list-item'})

  #                
  for i in result_li:
    #   BeautifulSoup         ,      
    page_url = str(i)
    soup = BeautifulSoup(page_url, 'html.parser')
    #     class        ,          
    result_href = soup.find_all('a', {'class': 'houseListTitle'})[0]
    #          
    get_page_detail(result_href.attrs['href'])


  #         
  result_next_page = soup_idex.find_all('a', {'class': 'aNxt'})
  if len(result_next_page) != 0:
    #       
    get_page(result_next_page[0].attrs['href'])
  else:
    print('      ')

#         ,  ,tab                 
def my_strip(s):
  return str(s).replace(" ", "").replace("
", "").replace("\t", "").strip() # BeautifulSoup , , def my_Beautifulsoup(response): return BeautifulSoup(str(response), 'html.parser') # def get_page_detail(url): response = requests.get(url, headers=header) if response.status_code == 200: soup = BeautifulSoup(response.text, 'html.parser') # , result_title = soup.find_all('h3', {'class': 'long-title'})[0] result_price = soup.find_all('span', {'class': 'light info-tag'})[0] result_house_1 = soup.find_all('div', {'class': 'first-col detail-col'}) result_house_2 = soup.find_all('div', {'class': 'second-col detail-col'}) result_house_3 = soup.find_all('div', {'class': 'third-col detail-col'}) soup_1 = my_Beautifulsoup(result_house_1) soup_2 = my_Beautifulsoup(result_house_2) soup_3 = my_Beautifulsoup(result_house_3) result_house_tar_1 = soup_1.find_all('dd') result_house_tar_2 = soup_2.find_all('dd') result_house_tar_3 = soup_3.find_all('dd') ''' , , 70 , , , 270 - - 4 2010 3 2 2 140 ( 32 ) 19285 /m² 81.00 ''' print(my_strip(result_title.text), my_strip(result_price.text)) print(my_strip(result_house_tar_1[0].text), my_strip(my_Beautifulsoup(result_house_tar_1[1]).find_all('p')[0].text), my_strip(result_house_tar_1[2].text), my_strip(result_house_tar_1[3].text)) print(my_strip(result_house_tar_2[0].text), my_strip(result_house_tar_2[1].text), my_strip(result_house_tar_2[2].text), my_strip(result_house_tar_2[3].text)) print(my_strip(result_house_tar_3[0].text), my_strip(result_house_tar_3[1].text), my_strip(result_house_tar_3[2].text)) if __name__ == '__main__': # url url = 'https://zhengzhou.anjuke.com/sale/' # get_page(url)
자신 이 블 로 그 를 쓰 면서 쓴 코드 때문에 getpage 함수 에서 약간의 변화 가 있 었 습 니 다.바로 다음 페이지 의 재 귀 호출 은 함수 뒤에 두 어야 하고 두 함수 가 소개 되 지 않 았 습 니 다.
그리고 데 이 터 를 my sql 에 저장 해도 쓰 지 않 았 기 때문에 후기 에 계속 따라 갈 것 입 니 다.thank you!!
이상 의 이 python 은 안주 객 중고 주택 사이트 의 데이터(실례 설명)를 얻 은 것 이 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 가 되 고 여러분 들 이 저 희 를 많이 지지 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기