使用Python进行网页抓取时出现关键错误

时间:2018-09-13 07:08:49

标签: python python-3.x web-scraping beautifulsoup jupyter-notebook

我正在尝试获取数据并将其导出到CSV,而我拥有主URL页面和第二个URL主页。 现在,我试图从此html类中获取“ 18.111”和“ 98.111”:

<img class="aaa" alt="map" data-track-id="static-map" width="97" height="142" src="https://websitewithdetailsD&amp;width=194&amp;height=284&amp;lat=18.111&amp;lon=98.111&amp;level=15&amp;returnImage=true">

我的代码是

for gps in secondpage_parser.find_all('img',{"class":"aaa"}, src=True):
     parsed_url = urlparse(gps['src'])
     mykeys = ['lat', 'lon']
     gpslocation = [parse_qs(parsed_url.query)[k][0] for k in mykeys]
print(gpslocation)

但是,在 “ gpslocation = [parse_qs(parsed_url.query)[k] [0] for mykeys中的k]]” 当我跑步时。

用作html类的其他部分(如名称和标题)的数据不太复杂。 我想知道我在哪部分有错误或应该如何解决。 请帮忙。

1 个答案:

答案 0 :(得分:0)

您只需使用以下拆分和替换操作即可完成

def get_lat_lon(tag):
    for key_value in tag.split('src')[1].split(';'):
        if 'lat' in key_value:
            lat = key_value.split('=')[1].replace('&amp','')
        if 'lon' in key_value:
            lon = key_value.split('=')[1].replace('&amp','')
    return lat, lon

lat,lon = get_lat_lon("""<img class="aaa" alt="map" data-track-id="static-map" width="97" height="142" src="https://websitewithdetailsD&amp;width=194&amp;height=284&amp;lat=18.111&amp;lon=98.111&amp;level=15&amp;returnImage=true">"""
)
print 'lat: ' + lat
print 'lon: ' + lon