编写 Python RegEx 以选择 HTML 中列表项的子集

发布于 2024-10-05 01:04:19 字数 988 浏览 1 评论 0原文

我有一个文件夹的网络索引视图...

<ul><li><a href="/sustainabilitymedia/pics/s5/"> Parent Directory</a></li> 
<li><a href="n150850_.jpg"> n150850_.jpg</a></li> 
<li><a href="n150850_ss.jpg"> n150850_ss.jpg</a></li> 
<li><a href="n150850q.jpg"> n150850q.jpg</a></li> 
<li><a href="n150858_.jpg"> n150858_.jpg</a></li> 
<li><a href="n150858_ss.jpg"> n150858_ss.jpg</a></li> 
<li><a href="n150858q.jpg"> n150858q.jpg</a></li> 
<li><a href="n150906_.jpg"> n150906_.jpg</a></li> 
<li><a href="n150906_ss.jpg"> n150906_ss.jpg</a></li>
...

这个列表不胜枚举。我的目标是仅获取以 _ss.jpg 结尾的列表项,以便我可以渲染结果并将其很好地显示在页面上进行演示。

我可以使用 BeautifulSoup 抓取页面,但从那里,我不确定如何仅过滤掉与特定模式匹配的列表项。该页面位于基本身份验证后面,我在之前有关 BeautifulSoup 的问题中已经解决了该问题。我也很高兴不使用它。

有什么想法吗?

I have a web index view of a folder...

<ul><li><a href="/sustainabilitymedia/pics/s5/"> Parent Directory</a></li> 
<li><a href="n150850_.jpg"> n150850_.jpg</a></li> 
<li><a href="n150850_ss.jpg"> n150850_ss.jpg</a></li> 
<li><a href="n150850q.jpg"> n150850q.jpg</a></li> 
<li><a href="n150858_.jpg"> n150858_.jpg</a></li> 
<li><a href="n150858_ss.jpg"> n150858_ss.jpg</a></li> 
<li><a href="n150858q.jpg"> n150858q.jpg</a></li> 
<li><a href="n150906_.jpg"> n150906_.jpg</a></li> 
<li><a href="n150906_ss.jpg"> n150906_ss.jpg</a></li>
...

The list goes on and on and on. My goal is to grab only the list items ending in _ss.jpg so that I can render out my results and display them nicely on a page for presentation.

I can grab the page with BeautifulSoup but from there, im not sure how to filter out only list items matching a particular pattern. The page is behind Basic Auth which I have solved in a previous question regarding BeautifulSoup. Im happy to not use it either.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

枉心 2024-10-12 01:04:19

您可以使用正则表达式执行 findAll(),例如 soup_object.findAll('a', {'href': re.compile('.*_ss\.jpg')})

You can do a findAll() using a regex, for example soup_object.findAll('a', {'href': re.compile('.*_ss\.jpg')}).

北城挽邺 2024-10-12 01:04:19

布伦特说得完全正确;为他这么快+1。

我已经制定了一个例子,所以我想无论如何我都会发布(无需对此进行投票):

>>> from BeautifulSoup import BeautifulSoup as bs
>>> from pprint import pprint
>>> import re
>>> markup = '''
... <ul><li><a href="/sustainabilitymedia/pics/s5/"> Parent Directory</a></li>
... <li><a href="n150850_.jpg"> n150850_.jpg</a></li>
... <li><a href="n150850_ss.jpg"> n150850_ss.jpg</a></li>
... <li><a href="n150850q.jpg"> n150850q.jpg</a></li>
... <li><a href="n150858_.jpg"> n150858_.jpg</a></li>
... <li><a href="n150858_ss.jpg"> n150858_ss.jpg</a></li>
... <li><a href="n150858q.jpg"> n150858q.jpg</a></li>
... <li><a href="n150906_.jpg"> n150906_.jpg</a></li>
... <li><a href="n150906_ss.jpg"> n150906_ss.jpg</a></li>'''
>>> soup = bs(markup)
>>> pprint(soup.findAll(href=re.compile('_ss[.]jpg

祝那些庆祝感恩节的人快乐。

))) [<a href="n150850_ss.jpg"> n150850_ss.jpg</a>, <a href="n150858_ss.jpg"> n150858_ss.jpg</a>, <a href="n150906_ss.jpg"> n150906_ss.jpg</a>]

祝那些庆祝感恩节的人快乐。

Brent's exactly right; +1 to him for being so fast.

I had already worked out an example so I figured I'd just post anyway (no need to vote on this):

>>> from BeautifulSoup import BeautifulSoup as bs
>>> from pprint import pprint
>>> import re
>>> markup = '''
... <ul><li><a href="/sustainabilitymedia/pics/s5/"> Parent Directory</a></li>
... <li><a href="n150850_.jpg"> n150850_.jpg</a></li>
... <li><a href="n150850_ss.jpg"> n150850_ss.jpg</a></li>
... <li><a href="n150850q.jpg"> n150850q.jpg</a></li>
... <li><a href="n150858_.jpg"> n150858_.jpg</a></li>
... <li><a href="n150858_ss.jpg"> n150858_ss.jpg</a></li>
... <li><a href="n150858q.jpg"> n150858q.jpg</a></li>
... <li><a href="n150906_.jpg"> n150906_.jpg</a></li>
... <li><a href="n150906_ss.jpg"> n150906_ss.jpg</a></li>'''
>>> soup = bs(markup)
>>> pprint(soup.findAll(href=re.compile('_ss[.]jpg

Happy Thanksgiving to those who celebrate it.

))) [<a href="n150850_ss.jpg"> n150850_ss.jpg</a>, <a href="n150858_ss.jpg"> n150858_ss.jpg</a>, <a href="n150906_ss.jpg"> n150906_ss.jpg</a>]

Happy Thanksgiving to those who celebrate it.

地狱即天堂 2024-10-12 01:04:19

我会使用类似的东西

data = data.split("\n")
data = filter(x : x.find("_ss.jpg") >= 0,data)
data = map(lambda x: re.match("(?<=<href=)\".*_ss\.jpg\"(?=>)",x),data)

应该生成一个以 _ss.jpg 结尾的名称列表。

i would use something like

data = data.split("\n")
data = filter(x : x.find("_ss.jpg") >= 0,data)
data = map(lambda x: re.match("(?<=<href=)\".*_ss\.jpg\"(?=>)",x),data)

this should produce a list of the names ending with _ss.jpg .

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文