如何使用urllib传递get方法的参数?

时间:2017-02-07 14:23:12

标签: python urllib

响应网页如下选择标题并输入 wordpress

enter image description here

这是我用python3传递get方法参数的python代码。

import urllib.request
import urllib.parse
url = 'http://www.it-ebooks.info/'
values = {'q': 'wordpress','type': 'title'}
data = urllib.parse.urlencode(values).encode(encoding='utf-8',errors='ignore')
headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0' }
request = urllib.request.Request(url=url, data=data,headers=headers,method='GET')
response = urllib.request.urlopen(request)
buff = response.read()
html = buff.decode("utf8")
print(html)

我无法获得所需的输出网页。 在我的例子中如何使用urllib传递get方法的参数?

2 个答案:

答案 0 :(得分:1)

data urllib.request.Request kwarg仅用于POST请求,因为它会修改请求的正文。

GET请求只使用网址参数,因此您应将这些参数附加到网址:

params = '?q=wordpress&type=title'
url = 'http://www.it-ebooks.info/search/{}'.format(params)

您当然可以花时间将其概括为通用函数。

答案 1 :(得分:1)

如果使用名为requests

的库,

会更好

enter image description here

import requests


headers = {
    'DNT': '1',
    'Accept-Encoding': 'gzip, deflate, sdch',
    'Accept-Language': 'es-ES,es;q=0.8,en;q=0.6',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Referer': 'http://www.it-ebooks.info/',
    'Connection': 'keep-alive',
}

r = requests.get('http://www.it-ebooks.info/search/?q=wordpress&type=title', headers=headers)

print r.content