2016-11-27 4 views
1

特定の地域の地理座標を抽出しようとしていますhttp://www.zillow.com/richardson-tx/は、不動産情報(販売用の住宅)で構成されています。これらはポイントで表されます。私はこれらの点の座標を取得したいと思います。私は以下のコードを使用しています。Python-美しいスープ:ウェブサイトからリストとして地理座標(緯度と経度)を取得する

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)を開き、位置するように、私は、コンソールでこれを入力して試してみました:

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); 

Enterキーを押し、その後、私は次のように試してみました:それは正しかったようにあなたのjqueryのが見えます

jQuery('span[itemprop=geo]') 

答えて

0

あなたはそれを正しく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になります。

ここでは、各スパンに経度と緯度が含まれているため、リストの各項目を繰り返し処理してそれらを取り出すことができます。 itemproplongitudelatitudemetaタグの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') 

コメント内のタプルは、このリストの理解によって作成されたリスト内の項目の1つの例です。

+0

私が書いたjqueryは、クロムの開発コンソールに入力されています。私もPythonでjqueryを含める必要がありますか? –

+0

あなたのPythonは大丈夫です。私はあなたのJQueryの選択が正しいと言おうとしていましたが、あなたはBeautifulSoupで同等のことをするだけでした。このコードを自分の末尾に付けるとうまくいくはずです。 – TheF1rstPancake

+0

確かに、あなたのコードを私の.pyファイルに追加し、結果を確認します –

関連する問題