我在过去的几天中发了几篇文章,所以感谢迄今为止的帮助,所有这些对于帮助初学者都非常感谢。TypeError:'NoneType'对象是不可迭代的,Python
Heads Up,我知道下面的代码看起来很erm非常基本,可能有一个简单和更优雅的方式来实现我所尝试的,但现在这是我可以学习和实际理解的基础知识哈哈。
只是想知道,如果有人实际上可以告诉我是什么错误所致,该程序的输出,它似乎就ok有时运行,与此错误失败,也许2出3
这仍然是一个工作在进行中的项目,主要目的是创建一个程序,我可以自动化一些我手动作为学习环境。
感谢任何Insight。
程序输出
Beginning Mining
Opener Created
Opener Headers Added
Url Assigned
HTTP Error 503: Service Temporarily Unavailable
1
Opener Created
Opener Headers Added
Url Assigned
Page Open and Read
90378
soup assigned to rawdata
filtered for torType Class
reassigned to soup to tordata
Links Filtered
Printing Recent Torrents from Filter WebData function
['/the-big-bang-theory-s07e08-hdtv-x264-lol-ettv-t8180359.html', '/the-walking-dead-s04e05-hdtv-x264-2hd-ettv-t8158163.html', '/the-vampire-diaries-s05e07-proper-hdtv-x264-2hd-ettv-t8180537.html', '/the-big-bang-theory-7x7-hdtv-lol-t8141134.html', '/how-i-met-your-mother-s09e09-hdtv-x264-2hd-eztv-t8164029.html', '/sons-of-anarchy-s06e10-hdtv-x264-asap-ettv-t8170162.html', '/american-horror-story-s03e06-hdtv-x264-killers-ettv-t8175485.html', '/sleepy-hollow-s01e07-hdtv-x264-lol-eztv-t8164318.html', '/elementary-2x8-hdtv-lol-t8180367.html', '/the-originals-s01e07-hdtv-x264-lol-ettv-t8169688.html', '/the-blacklist-s01e07-hdtv-x264-lol-eztv-t8124923.html', '/modern-family-s05e07-hdtv-x264-2hd-eztv-t8175344.html', '/arrow-s02e06-proper-hdtv-x264-2hd-eztv-t8179975.html', '/white-collar-s05e05-hdtv-x264-2hd-eztv-t8180828.html', '/homeland-s03e07-720p-hdtv-x264-killers-eztv-t8158378.html', '/greys-anatomy-s10e09-hdtv-x264-lol-ettv-t8180608.html', '/how-i-met-your-mother-s09e08-hdtv-x264-2hd-eztv-t8124354.html', '/arrow-s02e05-hdtv-x264-lol-ettv-t8135416.html', '/boardwalk-empire-s04e10-hdtv-x264-2hd-eztv-t8158693.html', '/the-simpsons-s25e04-hdtv-x264-lol-eztv-t8157997.html', '/modern-family-s05e06-hdtv-x264-asap-eztv-t8061643.html', '/new-girl-s03e07-hdtv-x264-lol-eztv-t8130237.html', '/the-tomorrow-people-us-s01e06-hdtv-x264-lol-eztv-t8174964.html', '/the-walking-dead-s04e04-hdtv-x264-2hd-ettv-t8118639.html', '/supernatural-s09e06-hdtv-x264-lol-ettv-t8169899.html']
Printing newdata which should be Recent Torrents from Filter WebData function
['/the-big-bang-theory-s07e08-hdtv-x264-lol-ettv-t8180359.html', '/the-walking-dead-s04e05-hdtv-x264-2hd-ettv-t8158163.html', '/the-vampire-diaries-s05e07-proper-hdtv-x264-2hd-ettv-t8180537.html', '/the-big-bang-theory-7x7-hdtv-lol-t8141134.html', '/how-i-met-your-mother-s09e09-hdtv-x264-2hd-eztv-t8164029.html', '/sons-of-anarchy-s06e10-hdtv-x264-asap-ettv-t8170162.html', '/american-horror-story-s03e06-hdtv-x264-killers-ettv-t8175485.html', '/sleepy-hollow-s01e07-hdtv-x264-lol-eztv-t8164318.html', '/elementary-2x8-hdtv-lol-t8180367.html', '/the-originals-s01e07-hdtv-x264-lol-ettv-t8169688.html', '/the-blacklist-s01e07-hdtv-x264-lol-eztv-t8124923.html', '/modern-family-s05e07-hdtv-x264-2hd-eztv-t8175344.html', '/arrow-s02e06-proper-hdtv-x264-2hd-eztv-t8179975.html', '/white-collar-s05e05-hdtv-x264-2hd-eztv-t8180828.html', '/homeland-s03e07-720p-hdtv-x264-killers-eztv-t8158378.html', '/greys-anatomy-s10e09-hdtv-x264-lol-ettv-t8180608.html', '/how-i-met-your-mother-s09e08-hdtv-x264-2hd-eztv-t8124354.html', '/arrow-s02e05-hdtv-x264-lol-ettv-t8135416.html', '/boardwalk-empire-s04e10-hdtv-x264-2hd-eztv-t8158693.html', '/the-simpsons-s25e04-hdtv-x264-lol-eztv-t8157997.html', '/modern-family-s05e06-hdtv-x264-asap-eztv-t8061643.html', '/new-girl-s03e07-hdtv-x264-lol-eztv-t8130237.html', '/the-tomorrow-people-us-s01e06-hdtv-x264-lol-eztv-t8174964.html', '/the-walking-dead-s04e04-hdtv-x264-2hd-ettv-t8118639.html', '/supernatural-s09e06-hdtv-x264-lol-ettv-t8169899.html']
Mining Ended
Relative Search
Diagnostic line ['*arrow*', '*grimm*', '*elementary*', '*American*Horror*', '*once*Upon*aTime*', '*Agents*of*shield*']
Diagnostic line None
Searching for My Torrents
Reset Vars
Diagnostic line *arrow*
Traceback (most recent call last):
File "C:\Python33\scratchpad.py", line 121, in <module>
SearchTorrents(MyPrograms,RecentTorrentLinks)
File "C:\Python33\scratchpad.py", line 103, in SearchTorrents
matchobj = fnmatch.filter(TorrentList,item)
File "C:\Python33\lib\fnmatch.py", line 59, in filter
for name in names:
TypeError: 'NoneType' object is not iterable
程序代码
WebUrl = 'http://kickasstorrents.come.in/tv/'
MyPrograms = ['*arrow*','*grimm*','*elementary*','*American*Horror*','*once*Upon*aTime*','*Agents*of*shield*']
loop = 0
RecentTorrentLinks = []
def RetrieveWebData(MyUrl):
try:
#create Url Opener
opener = urllib.request.build_opener()
#Diagnostic Line
print("Opener Created")
#Simulation as a browser
opener.addheaders =[('User-agent','Mozilla/5.0')]
#Diagnostic Line
print("Opener Headers Added")
url = (MyUrl)
#Diagnostic Line
print("Url Assigned")
#Open URL and read Data
page = opener.open(url).read()
#Diagnostic Line
print("Page Open and Read")
#Diagnostic Line
print(len(page))
newdata = FilterWebData(page)
# Diagnotic Line
print ("Printing newdata which should be Recent Torrents from Filter WebData function")
print (newdata)
return newdata
except urllib.error.URLError as e:
print(e)
if e.code == 503:
print (loop ++ 1)
RetrieveWebData(WebUrl)
else:
print('Error Occured :-' + e + ' Code :- '+ e.code)
sys.exit()
def FilterWebData(RawData):
RecentTors = []
try:
soup = BeautifulSoup(RawData)
#Diagnostic Line
print (" soup assigned to rawdata")
TorData = soup.find_all("a", {"class" : "torType"})
#Diagnostic Line
print (" filtered for torType Class")
soup = BeautifulSoup(str(TorData))
#Diagnostic Line
print (" reassigned to soup to tordata")
for link in soup.find_all('a'):
RecentTors.append(link.get('href'))
#Diagnostic Line
print ("Links Filtered")
# Diagnotic Line
print ("Printing Recent Torrents from Filter WebData function")
print (RecentTors)
return RecentTors
#Simpler Version of my code by StackOverlfow User
#TorData = soup.find_all("a", {"class" : "torType", 'href': True})
#return [link['href'] for link in TorData]
except OSError as e:
print("An error occurred during filtering",e)
def SearchTorrents(SearchCrit,TorrentList):
try:
#Diagnostic Line
print ('Diagnostic line ' + str(SearchCrit))
print ('Diagnostic line ' + str(TorrentList))
#Diagnostic Line
print ("Searching for My Torrents")
item = " "
matchobj = " "
#Diagnostic Line
print ("Reset Vars")
for item in SearchCrit:
#Diagnostic Line
print ('Diagnostic line ' + item)
#print ('Diagnostic line ' + str(TorrentList))
matchobj = fnmatch.filter(TorrentList,item)
print (matchobj)
except OSError as e:
print("An error occurred during searching",e)
#Diagnostic Line
print ("Beginning Mining")
RecentTorrentLinks = RetrieveWebData(WebUrl)
#Diagnostic Line
print ("Mining Ended")
#Diagnostic Line
print ("Relative Search")
#Diagnostic Line
#print ("Diagnotic Line TorrentLinks ")
#print (RecentTorrentLinks)
SearchTorrents(MyPrograms,RecentTorrentLinks)
#Diagnostic Line
print ("Relative Ended")
好感谢的答案,我implementated错误检查和我换成一个全局变量在retreieveweb函数的返回,名单正在分发从变量到变量到很多,只要我拿这个,也许不正确的快捷方式,这一次似乎是第一次工作。感谢您的见解和帮助:) – DeadZero