从不同的线程使用此代码
import re
import requests
from bs4 import BeautifulSoup
data = """
<script type="text/javascript">
window._propertyData =
{ *** a lot of random code and other data ***
"property": {"street": "21st Street", "apartment": "2101", "available": false}
*** more data ***
}
</script>
"""
soup = BeautifulSoup(data, "xml")
pattern = re.compile(r'\"street\":\s*\"(.*?)\"', re.MULTILINE | re.DOTALL)
script = soup.find("script", text=pattern)
print pattern.search(script.text).group(1)
这让我得到了想要的结果:
21st Street
但是,我试图通过尝试正则表达式的不同变体来获得全部内容,但无法实现输出:
{"street": "21st Street", "apartment": "2101", "available": false}
我尝试了以下方法:
pattern = re.compile(r'\"property\":\s*\"(.*?)\{\"', re.MULTILINE | re.DOTALL)
它没有产生预期的结果。
感谢您的帮助!
谢谢。
最佳答案
根据上面的评论,更正您的拼写错误并使用它
r"property\W+({.*?})"
property :
寻找准确的字符串
\W+
:匹配任何非单词字符
({.*?})
: 捕获组一
.*
匹配大括号内的任何字符{}
?
尽可能少的匹配
关于python - 重新编译正则表达式帮助(python、beautifulsoup),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41095457/