首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python urllib3登录+搜索

python urllib3登录+搜索
EN

Stack Overflow用户
提问于 2015-03-15 13:28:32
回答 1查看 4.3K关注 0票数 1
代码语言:javascript
复制
import urllib3
import io
from bs4 import BeautifulSoup
import re
import cookielib

http = urllib3.PoolManager()
url = 'http://www.example.com'
headers = urllib3.util.make_headers(keep_alive=True,user_agent='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6')
r = http.urlopen('GET', url, preload_content=False)

# Params die dann am Post request übergeben werden
params = {
    'login': '/shop//index.php',
    'user': 'username',
    'pw': 'password'
  }
suche = {
    'id' : 'searchfield',
    'name' : 'suche',
    }

# Post Anfrage inkl params (login) Antwort in response.data
response = http.request('POST', url, params, headers)
suche = http.request('POST', site-to-search? , suche, headers)
html_suche = suche.data

print html_suche

我尝试用这段代码登录到一个站点,然后再进行搜索。有了这段代码,我得到了一个没有被标记的答案。

我如何结合我第一次登录和之后的搜索。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-15 18:07:00

Web服务器通过设置cookie来跟踪类似浏览器的客户端状态,客户端必须返回cookie。默认情况下,urllib3并不假装是浏览器,所以我们需要做一些额外的工作来将cookie转发回服务器。下面是一个如何使用httpbin.org实现此操作的示例

代码语言:javascript
复制
import urllib3
http = urllib3.PoolManager()

# httpbin does a redirect right after setting a cookie, so we disable redirects
# for this request
r = http.request('GET', 'http://httpbin.org/cookies/set?foo=bar', redirect=False)

# Grab the set-cookie header and build our headers for our next request.
# Note: This is a simplified version of what a browser would do.
headers = {'cookie': r.getheader('set-cookie')}
print headers
# -> {'cookie': 'foo=bar; Path=/'}

r = http.request('GET', 'http://httpbin.org/cookies', headers=headers)
print r.body
# -> {
#      "cookies": {
#        "foo": "bar"
#      }
#    }

(注意:这个菜谱很有用,urllib3的文档也会从中受益。我希望能有一个拉力请求,这样可以增加一些内容。)

Martijn提到的其他选项是使用一个更高级的库,它更像是一个浏览器。对于这类工作,robobrowser看起来是一个很好的选择,但是requests也为您提供了管理cookies的功能,并且它在下面使用了urllib3。:)

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29061135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档