亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過網絡抓取在 python 中使用正則表達式排除字符串的一部分

通過網絡抓取在 python 中使用正則表達式排除字符串的一部分

MMMHUHU 2024-01-27 16:12:57
我正在嘗試從電子商務網站上抓取一些數據用于個人項目。我正在嘗試從 html 構建一個嵌套的字符串列表,但 html 的一部分出現問題。每個列表項如下所示:<div class="impressions" data-impressions=\'{"id":"01920","name":"Sleepy","price":12.95,"brand":"Lush","category":"Bubble Bar","variant":"7 oz.","quantity":1,"list":"/bath/bubble-bars/sleepy/9999901920.html","dimension11":"","dimension12":"Naked,Self Preserving,Vegan","dimension13":1,"dimension14":1,"dimension15":true}\'></div>我現在擁有的是一個正則表達式,它可以將 data-impressions 標簽中的所有項目像這樣轉換并在逗號處分割它們:list_return = [re.findall('\{([^{]+[^}\'></div>])', i) for i in bathshower_impressions]list_return = [re.split(',', list_return[i][0]) for i in range(0, len(list_return))]這為我提供了每個事物的列表列表,這些列表將成為字典中的鍵:值對。對于上面的示例,第二級項目如下:[['"id"', '"01920"'],  ['"name"', '"Sleepy"'],  ['"price"', '12.95'],  ['"brand"', '"Lush"'],  ['"category"', '"Bubble Bar"'],  ['"variant"', '"7 oz."'],  ['"quantity"', '1'],  ['"list"', '"/bath/bubble-bars/sleepy/9999901920.html"'],  ['"dimension11"', '""'],  ['"dimension12"', '"Naked'],  ['Self Preserving'],  ['Vegan"'],  ['"dimension13"', '1'],  ['"dimension14"', '1'],  ['"dimension15"', 'true']]我的問題是維度 12,我不知道如何排除該維度以逗號分隔,以便該列表顯示為:['"dimension12"', '"Naked,Self Preserving,Vegan"']如有任何幫助,我們將不勝感激,謝謝。
查看完整描述

1 回答

?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

我想建議一種不同的方法。該屬性值看起來像JSON,那么為什么不使用json模塊呢?這樣,您就有了一個現成的數據結構,可以進一步修改。


import json

from bs4 import BeautifulSoup



html_list = [

"""<div class="impressions" data-impressions=\'{"id":"01920","name":"Sleepy","price":12.95,"brand":"Lush","category":"Bubble Bar","variant":"7 oz.","quantity":1,"list":"/bath/bubble-bars/sleepy/9999901920.html","dimension11":"","dimension12":"Naked,Self Preserving,Vegan","dimension13":1,"dimension14":1,"dimension15":true}\'></div>""",

]


data_structures = []

for html_item in html_list:

    soup = BeautifulSoup(html_item, "html.parser").find("div", {"class": "impressions"})

    data_structures.append(json.loads(soup["data-impressions"]))


print(data_structures)

這會輸出一個字典列表:


[{'id': '01920', 'name': 'Sleepy', 'price': 12.95, 'brand': 'Lush', 'category': 'Bubble Bar', 'variant': '7 oz.', 'quantity': 1, 'list': '/bath/bubble-bars/sleepy/9999901920.html', 'dimension11': '', 'dimension12': 'Naked,Self Preserving,Vegan', 'dimension13': 1, 'dimension14': 1, 'dimension15': True}]

要訪問所需的密鑰,只需執行以下操作:


for data_item in data_structures:

    print(data_item["dimension12"])

印刷:Naked,Self Preserving,Vegan


查看完整回答
反對 回復 2024-01-27
  • 1 回答
  • 0 關注
  • 238 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號