如果通过链接您的意思是 url,那么您需要使用BeautifulSoup
来使内容可读和可解析为 Beautiful soup
如果您只是对新内容做同样的事情,那么就这样做
import urllib2
def get_data(link):
page = urllib2.urlopen(link)
soup = BeautifulSoup(page)
return soup
现在你可以使用 BeautifulSoup 来解析给定链接中的内容,你不需要像你拥有它那样做
更多关于beautifulsoup的信息,还有
另一个有用的网站Bs4 Webscraping
编辑
就像你说你已经完成了那部分,你正试图通过递归获得下一个链接
我写了这个例子:
import urllib2
from bs4 import BeautifulSoup
def go_to_next_page(soup, data, curr_link):
print "Curr Link: " + curr_link
pop = soup.find_all('a',{'class':'guide-item yt-uix-sessionlink yt-valign guide-item-selected'})
for i in pop: #These three lines get the new link
end = i.get('href')
new_link = 'http://www.youtube.com' + end
if new_link != "":
print "Next Link: " + new_link #then if the new_link isnt empty it gets the new soup
new_soup = BeautifulSoup(urllib2.urlopen(new_link).read())
data = go_to_next_page(new_soup, data, new_link)
return data
def get_data(link):
page = urllib2.urlopen(link)
soup = BeautifulSoup(page)
return soup
go_to_next_page(get_data('http://www.youtube.com'),data,'http://www.youtube.com')
此示例从中获取数据curr_link
,然后找到新链接(在此示例中是 Youtube 热门页面),然后返回 new_links 页面的 html 并使用新数据进行递归(我假设您使用的是相同的 BeautifulSoup prasing在每次递归的函数中)
可能有更好的方法可以做到这一点,但这很好用