【发布时间】:2020-05-05 20:13:16
【问题描述】:
我一直在尝试从 html 中提取图像源链接、order_detail 链接、成本(卢比)和产品名称(未格式化并且是多行的)。 我尝试了很多解决方案,主要是开始和结束,但没有一个有效。 下图为示例分区(请复制到记事本中)。
txt = """div>
<div class="ShLswe">
<a class="_2WFi0x" href="/order_details?order_id=OD40818094004&item_id=OD408180940040000&unit_id=OD408180940040000000">
<div class="row">
<div class="col-6-12">
<div class="row">
<div class="col-3-12">
<div class="J2h1WZ">
<div class="_3BTv9X" style="height: 75px; width: 75px;"><img class="_1Nyybr _30XEf0" alt="" src="https://rukminim1.flixcart.com/image/75/75/usb-adaptor/s/9/8/tp-link-150-mbps-wireless-n-original-imad8rruefj6rf3y.jpeg"></div>
</div>
</div>
<div class="col-8-12">
<div class="_3D-3p2">
<span class="row _13y4_y _1iu0PI">TP-LINK 150 Mbps TL-WN721N Wireless N</span>
<div class="row _3i00zY"><span class="_3i00zY _2n1WrW">Seller: </span><span class="_2dTbPB">WS Retail</span></div>
</div>
</div>
</div>
</div>
<div class="col-2-12 JL36Xz">₹512</div>
<div class="col-4-12 _3Yi3bU">
<div>
<div class="_30ud5x _3ELbo9"></div>
<span class="_7BRRQk">Delivered on Aug 20, 2014</span>
<div class="_2t-3dH">Your item has been delivered</div>
</div>
<div class="d-uGDa"></div>
<div class="paz6BF">
<div class="_1S3Y5S row">
<a class="FlPMmo"><img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMTYnIGhlaWdodD0nMTknIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTggMTgiPgoJPGcgZmlsbD0nbm9uZSc+CgkJPHBvbHlnb24gaWQ9IlNoYXBlIiBmaWxsPSIjMjg3NEYxIiBwb2ludHM9IjkgMTIuMDYyNSAxMy42Mzc1IDE1LjQzNzUgMTEuODYyNSA5Ljk4NzUgMTYuNSA2LjY4NzUgMTAuODEyNSA2LjY4NzUgOSAxLjA2MjUgNy4xODc1IDYuNjg3NSAxLjUgNi42ODc1IDYuMTM3NSA5Ljk4NzUgNC4zNjI1IDE1LjQzNzUiIC8+CgkJPHBvbHlnb24gaWQ9IlNoYXBlIiBwb2ludHM9IjAgMCAxOCAwIDE4IDE4IDAgMTgiIC8+Cgk8L2c+Cjwvc3ZnPg==" class="_3Q4GqT col-1-5"><span class="_3zvrLw col-3-5">Rate & Review Product</span></a></div></div></div></div></a>
</div>
</div>"""
x = re.match(r'^<img class="_1Nyybr _30XEf0" alt="" src="(.*?)\.jpeg$', txt)
print(x)
没有输出
注意:上面的 txt 包含与其他部门相同的模式(类名)
1) 图像 = 开始:<img class="_1Nyybr _30XEf0" alt="" src=" 结束:.jpeg 或 ">
需要的字符:https://rukminim1.flixcart.com/image/75/75/usb-adaptor/s/9/8/tp-link-150-mbps-wireless-n-original-imad8rruefj6rf3y.jpeg
2) 名称 = 开始:<span class="row _13y4_y _1iu0PI"> 结束:</span>
需要的字符:TP-LINK 150 Mbps TL-WN721N Wireless N
3) 成本 = 开始:<div class="col-2-12 JL36Xz">₹ 结束:</div>
需要的字符:512
以上所有内容都非常相似,解决方案也是如此,但是字符串非常模糊,我在操作它时遇到了很多错误。 我只需要提取所需的字符并将其存储在列表中。任何方法都值得赞赏。谢谢
【问题讨论】:
-
为什么不至少部分地使用适当的 HTML 解析器?
-
关于正则表达式,删除
^和$并使用re.search。 -
您可以使用beautiful soup 轻松完成这一切。
标签: python python-3.x regex