簡體   English   中英

使用python從網站抓取數據列表的最佳方法

[英]Best way to scrape a list of data from a website with python

我正在從網頁中抓取數據以在API中使用,並正在尋找最適合pythonic /的方式-頁面源中有一個名為“ markerData”的詞典列表,我需要獲取lat和lng值。

數據樣本:

“ markerData”:[{“ docEl”:null,“ lid”:0,“ clickable”:true,“ lat”:34.0489281,“ lng”:-111.0937311,“ title”:“”,“ iconURL”:“ / /assets.bankofamerica.com/images/mapmarker2.png“,”信息“:” </ div>查看亞利桑那州的所有位置</a> </ div> </ div> </ div> </ div> </ </ div>“},{” docEl“:null,” lid“:1,” clickable“:true,” lat“:35.20105,” lng“:-91.8318334,” title“:”“,” iconURL“:” / /assets.bankofamerica.com/images/mapmarker2.png“,”信息“:” </ div>查看阿肯色州的所有位置</a> </ div> </ div> </ div> </ div> </ </ DIV>“},

過去,我已經多次使用python的lxml模塊來執行此類任務,但是由於我的'markerData'不是明顯的html結構,因此我試圖找出最佳的執行方法。 具體來說,在下面的函數中,我嘗試為每個lat和lng值定義tree.xpath。

lats = []
lngs = []

def get_coordinates():

    i = 0

    while i < 35:

            page = requests.get('https://locators.bankofamerica.com/&check_list=4429#')
            tree = html.fromstring(page.content)

            lat = tree.xpath('//div[@id=mapWrap/markerData/lat/text()'.format(i))
            lng = tree.xpath('//div[@id=mapWrap/markerData/lng/text()'.format(i))

            str1 = ''.join(lat)
            str2 = ''.join(lng)

            lats.append(str1)
            lngs.append(str2)

            i += 1

    return lats, lngs

我也無法抗拒感覺到可能會有一種更簡單的方法來執行此操作,例如將整個頁面源讀入文本文件並嘗試僅獲取“ markerData”列表。

對於為我的lat和lng值定義xpath的任何幫助,或者有關如何隔離和捕獲此數據的任何其他建議,我將不勝感激。

這是我編寫的為我完成任務的功能,以防在類似情況下可能對其他人有所幫助:

def get_coordinates():

        page = requests.get('https://locators.bankofamerica.com/&check_list=4429')
        tree = html.fromstring(page.content)

        lat_lng = tree.xpath("//script[contains(., 'markerData')]/text()")
        lat_lng_string = str(lat_lng)
        latitude = re.findall('"lat":\d+\.\d+', lat_lng_string)
        longitude = re.findall('"lng":-\d+\.\d+', lat_lng_string)

        la = re.findall('\d+\.\d+', str(latitude))
        lo = re.findall('-\d+\.\d+', str(longitude))

        coords = dict(zip(la, lo))

        return coords

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM