当前位置: 首页 > 知识库问答 >
问题:

使用美丽的汤解析< ul >标签

丁俊爽
2023-03-14

考虑一下这段代码:

divTag = soup.find_all("div", {"class":"classname"})
print divTag
for tag in divTag:
    ulTag = soup.find_all("ul", {"class":"classname"})
    print ulTag
    for tag in ulTag:
        liTag = soup.find_all("li", {"class":"classname"})
        print liTag
        for tag in liTag:
            diTag = soup.find_all("div", {"class":"classname"})
            print diTag
            for tag in diTag:
                aTags = tag.find_next("a")
                value = aTags.string
                print value

它只打印“divTag”

更新:

<div class="classname">
<ul auto-load="true" class="classname" data-href="">
<li class="classname">
<div class="classname"><a href="">"value"</a>  string <a href="">string1</a> <a class="muted"><abbr class="timeago" title=" 1 Jun, 2015, 10:23 am">7 hours ago</abbr></a>
</div>
</li>
<li>
</li>
</ul>
</div>

我基本上想在'a'标签中提取“字符串”值。

共有2个答案

李兴安
2023-03-14

每当你在汤里寻找的时候。所以你失败了。您应该在标签的父标签中搜索标签。试着这样做:

divTag = soup.find_all("div", {"class":"classname"})
for ulTag in divTag:
    for liTag in ulTag.find_all("li", {"class":"classname"}):
        for tag in liTag.find_all("div", {"class":"classname"}):
            for aTag in tag.find_all('a'):
                print aTag.string

对于您提供的 html,输出为:

"value"
string1
7 hours ago
夏侯昆琦
2023-03-14

具有next_sibling的完整解决方案

ulTag = soup.find("ul", {"class": "classname"})
aTags = ulTag.find_all("a")
for aTag in aTags:
    sibling = aTag.next_sibling
    siblingString = str(sibling).strip()
    if len(siblingString) > 0:
        print siblingString 
 类似资料:
  • 我试图抓取这个网站:https://www.senate.gov/general/contact_information/senators_cfm.cfm 我的代码: 问题是它实际上并没有到达网站。我在soup var中得到的HTML根本不是正确网页中的HTML。 我不知道从这里去哪里!任何和所有的帮助都将不胜感激。

  • 我试图使用美丽的汤抓取newegg的产品名称、描述、价格和图像。我有以下bs4.element.标签类型,我想从标签中提取“src”链接。以下是我的标签: 我怎样才能提取 从这个标签?我试过了 但我收到了Keyerror。

  • 我希望从< code>div内的标题和< code >内的文本中提取文本字符串 我可以用<code>汤得到标题。h1</code>,但我想获得特定于div<code>中的<code>h1</code> 超文本标记语言:

  • 下面是一个网络刮刀,它用漂亮的汤从这个网站上刮出一个团队名单。每一列数据都被放入一个数组,然后循环到一个CSV文件中。我想刮掉团队名称(代码中的“团队”),但我正在努力将元标记(见下文的html代码)合并到我的CSV写入器循环中。 我认为问题在于“Team”数组中的值长度与其他列中的值长度不匹配。例如,我当前的代码打印的数组如下所示: 但我需要团队数组(最后一个数组)匹配前两个数组的长度,如下所示

  • 我试图从一个网站上为我的项目收集数据。但是问题是我没有在我的输出中得到我在我的开发者工具栏屏幕中看到的标签。以下是我想从其中抓取数据的DOM的快照: 我能够获得类为“bigContainer”的div标记,但是我不能在这个标记中刮取标记。例如,如果我想得到网格项标记,我得到了一个空列表,这意味着它表明没有这样的标记。为什么会这样?请帮忙!!

  • 问题内容: 我正在尝试使用BeautifulSoup从网页中提取表格的HTML代码。 我想知道为什么下面的代码可以与一起使用,如果我更改为,则可以打印回去。 问题答案: 文档中有一个特殊的段落,称为“解析器之间的差异”,其中指出: Beautiful Soup为许多不同的解析器提供了相同的接口,但是每个解析器都是不同的。不同的解析器将从同一文档创建不同的解析树。最大的区别在于HTML解析器和XML