如何删除带有特定域名或字符串的url链接

2024-06-07 06:00:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经做了一个功能,以刮网站。该函数可以抓取网站并获取网站内部的url。你知道吗

print links      #scrape()
http://www.web1.to/something
http://www.web2.gov.uk/something
http://www.web3.com/something
http://www.web4.com/something
http://www.web5.com/something
http://www.web6.com/something

在获取时,它也会检索不必要的站点链接或带有我要删除的字符串.rdf。你知道吗

  def scrape()
    .
    .
            links = re.findall('href="(http.*?)"', sourceCode)

            for link in set(links):                         
                if 'web1.to' in link:
                    pass
                elif 'web2.gov.' in link:
                    pass
                elif '.rdf' in link:
                    pass
                else:                       
                    return link
                    #print link; #it seems to work(*)

#this section which call scrape function and prints the links   
for web in scrape():
    print web
    time.sleep(1)

我已经创建了这个函数,如果在scrape函数中使用print,它似乎可以工作(请参见注释行#print链接)。但是当我在外面调用它时,它只返回一个url

http://www.web6.com/something

然后我删除了for循环

            if 'web1.to' in link:
                pass
            elif 'web2.gov.' in link:
                pass
            elif 'web3.com' in link:
                pass
            else:                       
                return link

使用此修改的函数从外部打印。我在这里给出的条件不起作用,它会打印所有的网站。你知道吗

我知道我在编码时犯了一些逻辑错误,但我看不出来。你能帮我吗


Tags: to函数incomhttp网站wwwlink
2条回答

请执行以下操作:

def scrape()
    .
    .
            links = re.findall('href="(http.*?)"', sourceCode)
            return links

links =  scrape()
for link in links:
    if 'web1.to' in link:
        pass
    elif 'web2.gov.' in link:
        pass
    elif 'web3.com' in link:
        pass
    else:                       
        print link

案例2:

您已经从内部删除了for循环,现在尝试访问"link"来检查各种条件,但是link没有定义,因此出现了错误。你知道吗

函数正在返回找到的第一个有效链接。尝试在scrape函数顶部添加新列表:

valid = []

每次找到有效链接时,请将其附加到有效链接列表中:

valid.append(link)

检查完所有链接后,返回整个列表:

return valid

尝试以下操作:

valid = []
for link in set(links):
    if 'web1.to' in link:
        pass
    elif 'web2.gov.' in link:
        pass
    elif '.rdf' in link:
        pass
    else:                       
        valid.append(link)

return valid

相关问题 更多 >