SwiftSoup 能够正确解析这一点吗?

Will SwiftSoup be able to parse this correctly?

提问人:Bryant Irawan 提问时间:6/30/2023 更新时间:6/30/2023 访问量:67

问:

为了更好的上下文,我正在抓取/解析的网址是:https://www.dreamflows.com/xlist-ca.php

enter image description here

我正在使用 SwiftSoup 来解析 HTML,但从文档中,我不确定这是否可行。html有一堆这样的行,不幸的是,我需要的文本不在元素中(甚至不是p标签)。它始终遵循 img 标签。

具体说来

  1.     '<img src="./Dreamflows California Cross-Listing_files/pixelshim.gif" width="12" border="0">'
    
  2. 河段名称

  3.     &nbsp;
    

请注意,有一个类似的场景,其中有

  1.     <a href="https://www.dreamflows.com/xlist-ca.php#Special_Symbols"><img src="./Dreamflows California Cross-Listing_files/querySym.gif" border="0"></a>
    
  2. 河段名称

  3.      &nbsp;
    

我不想要这些。

因此,在我的示例中,应该只解析 North Fork Smith River - Low Divide Rd 到 Gasquet(14.6 英里,III 到 V-,H&S p69)。

快速 解析 网页抓取 Beautifulsoup

评论


答:

1赞 HedgeHog 6/30/2023 #1

您可以使用以下选择器来识别图像,然后从那里选择文本。img[src$="pixelshim.gif"]

根据您的标签,此示例仅使用 BeautifulSoup (Python) 进行演示

from bs4 import BeautifulSoup
import requests

soup = BeautifulSoup(
            requests.get('https://www.dreamflows.com/xlist-ca.php').text
)

for e in soup.select('img[src$="pixelshim.gif"]'):
    print(e.next)

输出

North Fork Smith River - Low Divide Rd to Gasquet (14.6 miles, III to V-, H&S p69)  
Middle Fork Smith River - Siskiyou Gorge (0.8 mile, IV+ to V, AWetState)  
Middle Fork Smith River - Patrick Creek Run (8.4 miles, III+ to IV, H&S p71)  
North Fork Smith River - Low Divide Rd to Gasquet (14.6 miles, III to V-, H&S p69)  
Middle Fork Smith River - Patrick Creek Run (8.4 miles, III+ to IV, H&S p71)  
Smith River - Gasquet Run (4.5 miles, II+ to III, Creekin')  
...

评论

0赞 Bryant Irawan 7/1/2023
谢谢!希望 SwiftSoup 也应该能够做到这一点。