首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >美丽的汤,看起来只有一种图案

美丽的汤,看起来只有一种图案
EN

Stack Overflow用户
提问于 2021-11-01 23:26:31
回答 3查看 31关注 0票数 0

问题是我想让这段代码找到"input.html“文件中的所有链接,但它只找到并显示了第一个链接。代码如下:

代码语言:javascript
运行
复制
import codecs
from bs4 import BeautifulSoup
fd = codecs.open('input.html', 'r')

def clean(html): 
    soup = BeautifulSoup(html, "lxml")
    for link in soup.find_all('a'):
        link.extract()
        text = link.get('href')
        return text
EN

回答 3

Stack Overflow用户

发布于 2021-11-01 23:34:07

可能是:

代码语言:javascript
运行
复制
import codecs
from bs4 import BeautifulSoup
fd = codecs.open('input.html', 'r')

text = []

def clean(html): 
    soup = BeautifulSoup(html, "lxml")
    for link in soup.find_all('a'):
        link.extract()
        text.append(link.get('href'))
    return text
票数 1
EN

Stack Overflow用户

发布于 2021-11-01 23:29:44

您在循环的末尾返回文本,该循环只迭代一次。执行以下操作:

代码语言:javascript
运行
复制
def clean(html): 
    soup = BeautifulSoup(html, "lxml")
    links = []
    for link in soup.find_all('a'):
        link.extract()
        text = link.get('href')
        links.append(text)
    return links

此外,您可以使用简单的列表理解来代替函数:

代码语言:javascript
运行
复制
soup = BeautifulSoup(html, "lxml")
links = [link.extract().get('href') for link in soup.find_all('a')]
票数 0
EN

Stack Overflow用户

发布于 2021-11-02 00:06:35

似乎你在循环的末尾得到了一个链接。您可以使用以下命令:

代码语言:javascript
运行
复制
def clean(html):
    soup = BeautifulSoup(html, 'html.parser')
    hrefs = soup.find_all('a')
    links = []
    if hrefs:
        for href in hrefs:
            href.extract()
            link = href.get('href')
            links.append(link)
        return links
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69803828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档