2016-11-27 4 views
1

부동산 정보 (판매용 주택)로 구성된 특정 지역 의 지리적 좌표를 추출하려고합니다. 이들은 점으로 표시됩니다. 이 점의 좌표를 얻고 싶습니다. 아래 코드를 사용하고 있습니다. Python- Beautiful Soup : 웹 사이트에서 지리적 좌표 (위도와 경도)를 목록으로 가져옵니다.

import requests 
from bs4 import BeautifulSoup 
url = 'http://www.zillow.com/richardson-tx/' 
response = requests.get(url) 
print(response.status_code) 
print(response.content) 
soup = BeautifulSoup(response.content) 
print (soup.prettify()) 
print(soup.find_all('data-latitude')) 

는 하나의 좌표 값을 추출하기 위해 나에게 올바른 접근 방식을 제공하는 좀 도와 주시겠습니까. 그들은 itemprop = geo로 s와 같이 언급됩니다.

예를 들어 Chrome의 zillow에서 Richardson의 속성을 검색 할 때. 우리는 개발 도구 (F12)을 열고 내가 찾을 수 있도록 콘솔이 입력 시도 : 그것은 올바른처럼

jQuery('span[itemprop=geo]') 

답변

0

귀하의 JQuery와 같습니다

var jq = document.createElement('script'); 
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"; 
    document.getElementsByTagName('head')[0].appendChild(jq); 

을 눌러 입력 한 다음 내가 좋아하는 시도 , 당신은 단지 정확하게 그것을 BeautifulSoup로 번역하지 않았습니다. 코멘트에

coord_tags = soup.find_all("span", attrs={"itemprop":"geo"}) 
# <span itemprop="geo" itemscope="" itemtype="http://schema.org/GeoCoordinates"> 
#  <meta content="32.978499" itemprop="latitude"/> 
#  <meta content="-96.728306" itemprop="longitude"/> 
# </span> 

태그는 목록 coord_tags 반환 된 항목의 예입니다. 이 코드는 itemprop이라는 속성을 가진 <span> 태그를 모두 geo과 같습니다.

여기에서 각 스팬에는 경도와 위도가 포함되어 있으므로 목록의 각 항목을 반복하여 해당 항목을 추출 할 수 있습니다. itemproplongitudelatitude 태그가있는 meta 태그의 content 특성이 필요합니다. 다음 코드는 해당 정보를 가져 와서 튜플에 넣습니다.

coordinates = [ 
     (
     c.find("meta", attrs={"itemprop":"latitude"}).attrs["content"], 
     c.find("meta", attrs={"itemprop":"longitude"}).attrs["content"] 
     ) 
     for c in coord_tags 
] 
# ('-96.728306', '32.978499') 

주석의 튜플은이 목록 이해로 작성된 목록 중 하나의 예제입니다.

+0

필자가 작성한 jquery는 크롬의 개발자 콘솔에 입력됩니다. 파이썬에서도 jquery를 포함시켜야합니까 ?? –

+0

아니요! 파이썬은 괜찮습니다. 나는 당신의 JQuery 선택이 맞았다 고 말하려고했는데, 당신은 BeautifulSoup에서 동등한 것을 할 필요가 있었다. 이 코드를 귀하의 말에 붙이면 작동합니다. – TheF1rstPancake

+0

물론, 내 .py 파일에 코드를 추가하고 결과를 확인합니다. –