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 은 안주 객 중고 주택 사이트 의 데이터(실례 설명)를 얻 은 것 이 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 가 되 고 여러분 들 이 저 희 를 많이 지지 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.