Python-美丽的汤:从网站获取地理坐标(Lat和Lon)作为列表

时间:2016-11-27 04:34:16

标签: python beautifulsoup maps bing-maps

我正在尝试提取特定区域http://www.zillow.com/richardson-tx/的地理坐标,其中包含房地产信息(待售房屋)。这些由点表示。我想得到这些点的坐标。我一直在使用以下代码。

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

任何人都可以帮助我提供正确的方法来提取坐标值。它们与itemprop = geo。

一样被提及

例如,当我们在Chrome中的zillow上搜索Richardson中的属性时。我们打开开发工具(F12),我尝试在控制台中键入它,以便找到:

 jQuery('span[itemprop=geo]')

按Enter,然后我尝试了:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"       android:installLocation="auto">
<uses-sdk android:minSdkVersion="22" android:targetSdkVersion="22" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<application android:label="DemoApp" android:debuggable="true">
</application>
</manifest>

1 个答案:

答案 0 :(得分:0)

你的jquery看起来是正确的,你只是没有正确地将它翻译成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中返回的项目的示例。此代码将查找属性<span>等于itemprop的所有geo代码。

在这里,每个范围包含经度和纬度,因此您可以迭代列表中的每个项目以将其拉出。您希望content代码的meta属性包含itemprop longitudelatitude。以下代码将获取该信息并将其放入元组中。

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

评论中的元组是此列表理解创建的列表中的一个项目的示例。