导入httplib ImportError:没有命名为httplib的模块

时间:2022-09-12 19:15:31

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。客户端。