Python正则表达式(pattern+wildcard+pattern)[返回](pattern)

2024-04-18 05:04:02 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中用selenium刮取和用re解析 从弦上

<div type="copy3" class="sc-bxivhb dHqnfT">756 W Peachtree St NW Atlanta GA 30308</div>

我想回来

756 W Peachtree St NW Atlanta GA 30308

这个正则表达式

("copy3").*?(?=</div>)

把我还给你

"copy3" class="sc-bxivhb dHqnfT">756 W Peachtree St NW Atlanta GA 30308

但是我想排除所有在>之前的756

我怎么包括这个


Tags: divretypeseleniumclassstscga
2条回答

匹配>,然后捕获组中后面的非<,并提取该组:

type="copy3"[^>]+>([^<]+)

https://regex101.com/r/BX2tVj/1

如果您想只匹配第一个<之后的内容,您就必须使用lookback(只有您确切地知道class=""属性可能包含的内容时,lookback才是可靠的):

(?<=type="copy3" class="sc-bxivhb dHqnfT">)[^<]+

https://regex101.com/r/BX2tVj/2

或者改用regex模块,这样就可以使用\K

type="copy3"[^>]+>\K[^<]+

https://regex101.com/r/BX2tVj/3

import regex
str = '<div type="copy3" class="sc-bxivhb dHqnfT">756 W Peachtree St NW Atlanta GA 30308</div>'
match = regex.search(r'type="copy3"[^>]+>\K[^<]+', str)

用硒刮擦,用硒来得到

my_element = driver.find_element_by_css_selector('div[type="copy3"]')
address = my_element.text

相关问题 更多 >