通过我的项目,我发现了两个问题:
HTTP Error 503: Service Temporarily Unavailable
。我需要查找一个名为class="torType"
的类,然后只获取链接网址,我有点工作,但我是否正确使用?
#import urllib.request
#from bs4 import BeautifulSoup
WebUrl = 'http://kickasstorrents.come.in/tv/'
def RetrieveWebData(MyUrl):
try:
opener = urllib.request.build_opener()
opener.addheaders =[('User-agent','Mozilla/5.0')]
url = (MyUrl)
page = opener.open(url).read()
return page
except OSError as e:
print("An error occurred reading the webpage ",e)
def FilterWebData(RawData):
try:
soup = BeautifulSoup(RawData)
TorData = soup.find_all("a", {"class" : "torType"})
soup = BeautifulSoup(str(TorData))
for link in soup.find_all('a'):
RecentTors = link.get('href')
return RecentTors
except OSError as e:
print("An error occurred during filtering",e)
RawPage = RetrieveWebData(WebUrl)
RecentTorrentLinks = FilterWebData(RawPage)
print(RecentTorrentLinks)
答案 0 :(得分:1)
您看到的503错误可能是由于服务器速率限制了您,不太频繁地点击服务器。
循环不正确;直接遍历TorData
个对象。您可以将搜索范围限制为仅具有a
属性的href
个链接:
soup = BeautifulSoup(RawData)
TorData = soup.find_all("a", {"class" : "torType", 'href': True})
return [link['href'] for link in TorData]
答案 1 :(得分:0)
您获得的间歇性HTTP 503错误与给定网址的高负载有关。
您可能希望在except
的{{1}}块中添加该内容:
RetrieveWebData()
当由于某种原因失败时,该函数将以递归方式再次调用自身,直到它没有收到HTTP 503错误。
此外,此 if e.code == 503:
return RetrieveWebData(MyUrl)
行错误:
FilterWebData()
每次迭代都会覆盖 RecentTors = link.get('href')
变量。你真的想做那样的事情:
RecentTors
我建议您使用最快的lxml
模块来利用XPath:
RecentTors = []
for link in soup.find_all('a'):
RecentTors += [link.get('href')]
return RecentTors
这就是全部!