我已经做了一个功能,刮网站。该功能刮刮网站,并在网站内获取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,我想删除这些链接。
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循环。
if 'web1.to' in link:
pass
elif 'web2.gov.' in link:
pass
elif 'web3.com' in link:
pass
else:
return link
使用此修改函数从外部打印。我在这里给出的条件不起作用,它打印了所有的网站。
我知道我在编码上犯了一些逻辑错误,但我没有看到。你能帮帮我吗
发布于 2016-03-17 11:13:37
您的函数正在返回它找到的第一个有效链接。尝试在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
发布于 2016-03-17 11:14:11
这样做:
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
,因此您得到了错误。
https://stackoverflow.com/questions/36058739
复制相似问题