使用python进行网页抓取2.7 AttributeError:'function'对象没有data = urllib.parse.urlencode(values)的属性'urlencode'

时间:2017-07-31 17:33:09

标签: python python-2.7

我一直在尝试从网站上提取数据并在Windows 10上使用python 2.7.13进行打印。它给出了以下错误:

Traceback (most recent call last):
  File "C:\Python27\Scripts\i1.py", line 5, in <module>
    data=urlparse.urlencode(values)
AttributeError: 'function' object has no attribute 'urlencode'

以下是代码:

    from urllib import urlopen
    from urlparse import urlparse
    url='http://pythonprogramming.net'
    values={'s':'basic','submit':'search'}
    data=urllib.parse.urlencode(values)
    data=data.encode('utf-8')
    req=urllib.request.Request(url,data)
    resp=urllib.request.urlopen(req)
    respData=resp.read()
    print(respData)

从Python 2开始,我写了from urllib import urlopenfrom urlparse import urlparse而不是import urllib.requestimport urllib.parse

1 个答案:

答案 0 :(得分:1)

解决方案1 ​​

urllib模块中没有解析器对象。您需要直接使用urlopen并将url作为参数传递。以下是修改后的工作代码:

import urllib
from urllib import urlopen

url='http://pythonprogramming.net'

values={'s':'basic','submit':'search'}
data=urllib.urlencode(values)
data=data.encode('utf-8')

response=urllib.urlopen(url,data)
responseData=response.read()

print responseData

解决方案2

您还可以使用beautifulSoup库来抓取您网站上的数据。它非常易于使用。以下是与您的示例相关的代码:

import urllib
from urllib import urlopen
from bs4 import BeautifulSoup

url='http://pythonprogramming.net'

page = urllib.urlopen(url)
soup = BeautifulSoup(page, "lxml")

print soup