I got this error when run test.py
我在运行test.py时得到这个错误
C:\Python32>python.exe test.py
Traceback (most recent call last):
File "test.py", line 5, in <module>
import httplib
ImportError: No module named httplib
How to correct it ?
如何改正?
Code block:
代码块:
#!/usr/local/bin/python
import httplib
import sys
import re
from HTMLParser import HTMLParser
class miniHTMLParser( HTMLParser ):
viewedQueue = []
instQueue = []
def get_next_link( self ):
if self.instQueue == []:
return ''
else:
return self.instQueue.pop(0)
def gethtmlfile( self, site, page ):
try:
httpconn = httplib.HTTPConnection(site)
httpconn.request("GET", page)
resp = httpconn.getresponse()
resppage = resp.read()
except:
resppage = ""
return resppage
def handle_starttag( self, tag, attrs ):
if tag == 'a':
newstr = str(attrs[0][1])
if re.search('http', newstr) == None:
if re.search('mailto', newstr) == None:
if re.search('htm', newstr) != None:
if (newstr in self.viewedQueue) == False:
print (" adding", newstr)
self.instQueue.append( newstr )
self.viewedQueue.append( newstr )
else:
print (" ignoring", newstr)
else:
print (" ignoring", newstr)
else:
print (" ignoring", newstr)
def main():
if sys.argv[1] == '':
print ("usage is ./minispider.py site link")
sys.exit(2)
mySpider = miniHTMLParser()
link = sys.argv[2]
while link != '':
print ("\nChecking link ", link)
# Get the file from the site and link
retfile = mySpider.gethtmlfile( sys.argv[1], link )
# Feed the file into the HTML parser
mySpider.feed(retfile)
# Search the retfile here
# Get the next link in level traversal order
link = mySpider.get_next_link()
mySpider.close()
print ("\ndone\n")
if __name__ == "__main__":
main()
1 个解决方案
#1
58
You are running Python 2 code on Python 3. In Python 3, the module has been renamed to http.client
.
您正在Python 3上运行Python 2代码。在Python 3中,模块被重命名为http.client。
You could try to run the 2to3
tool on your code, and try to have it translated automatically. References to httplib
will automatically be rewritten to use http.client
instead.
您可以尝试在代码上运行2to3工具,并尝试自动翻译它。将自动重写对httplib的引用以使用http。客户端。
#1
58
You are running Python 2 code on Python 3. In Python 3, the module has been renamed to http.client
.
您正在Python 3上运行Python 2代码。在Python 3中,模块被重命名为http.client。
You could try to run the 2to3
tool on your code, and try to have it translated automatically. References to httplib
will automatically be rewritten to use http.client
instead.
您可以尝试在代码上运行2to3工具,并尝试自动翻译它。将自动重写对httplib的引用以使用http。客户端。