首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何删除具有特定域名或字符串的url链接

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

Stack Overflow用户
提问于 2016-03-17 11:05:36
回答 2查看 255关注 0票数 0

我已经做了一个功能,刮网站。该功能刮刮网站,并在网站内获取url。

打印链接#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,我想删除这些链接。

代码语言:javascript
运行
复制
  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)

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

http://www.web6.com/something

然后,我删除了for循环。

代码语言:javascript
运行
复制
            if 'web1.to' in link:
                pass
            elif 'web2.gov.' in link:
                pass
            elif 'web3.com' in link:
                pass
            else:                       
                return link

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

我知道我在编码上犯了一些逻辑错误,但我没有看到。你能帮帮我吗

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-17 11:13:37

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

代码语言:javascript
运行
复制
valid = []

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

代码语言:javascript
运行
复制
valid.append(link)

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

代码语言:javascript
运行
复制
return valid

试着做这样的事情:

代码语言:javascript
运行
复制
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
票数 1
EN

Stack Overflow用户

发布于 2016-03-17 11:14:11

这样做:

代码语言:javascript
运行
复制
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,因此您得到了错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36058739

复制
相关文章

相似问题

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