gpt4 book ai didi

python - 正则表达式多行 - 如何获取页面源的一部分

转载 作者:行者123 更新时间:2023-11-30 23:34:53 26 4
gpt4 key购买 nike

很抱歉,如果这个问题之前已经向您提出过,但我发现 python 正则表达式文档很难理解,主要是由于缺乏示例。我想抓取页面源的一 block 以便稍后再次解析。例如:

    <div id="viewed"><div class="shortstory-block">

<div class="shortstoey-block-image">
<a href="...."><img src="/uploads/posts/cov.jpg" alt="instance 1"/></a>
<span class="format"><a href="http://www..../">something</a></span>
</div>

<a href="http://....."><span class="shortstory-block-title" style="text-decoration:none !important;">
Something
</span>
</a>

</div><div class="shortstory-block">

<div class="shortstoey-block-image">
<a href="...."><img src="/uploads/posts/cov.jpg" alt="something 2"/></a>
<span class="format"><a href="http://www.website/xfsearch/smth/">something</a></span>
</div>

<a href="http://web.html"><span class="shortstory-block-title" style="text-decoration:none !important;">
Something
</span>
</a>
</div>
(* x times)
<div id="rated">....

我将所有页面源代码都放在一个变量(html_source)中,并且我想仅使用此代码块(在 div id="viewed"和 div id="erated"之间)定义另一个变量。我想捕获一切,尽管我可以在两个实例之间找到任何\n 或\r。

有人可以指出我正确的方向(正则表达式)吗?

提前致谢

最佳答案

如果您确实只是想在两个文本元素之间查找某些内容,则可以使用以下正则表达式:

import re

with open('yourfile') as fin:
page_source = fin.read()

start_text = re.escape('<div id="viewed">')
until_text = re.escape('<div id="rated">')
match_text = re.search('{}(.*?){}'.format(start_text, until_text), page_source, flags=re.DOTALL)
if match_text:
print match_text.group(1)

关于python - 正则表达式多行 - 如何获取页面源的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17777417/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com