在python中使用身份验证检索html代码

2024-10-04 03:16:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要访问网页的html源代码

但它需要身份验证我如何通过用户名密码并使用python获取它 问题在于,例如,如果我这样做:

import requests
url='http://cuherp.chalkpad.in//Interface/index.php'
url_in='http://cuherp.chalkpad.in//Interface/Student/scIndex.php'
u='b1300*****'
p='jang******'
params={'Username':u,
        'Password':p,
        'Institute':'CSOET',
        'Session':'2013-14'}
resp_1=requests.get(url,auth=(u,p))
resp_2=requests.get(url_in,auth=(u,p),cookies=resp_1.cookies)

这里“url”是登录页面,“url”是我需要的html代码
但是在运行这个“url”之后_网址“返回”url“本身,即登录页面,这意味着我仍然不在里面 请帮忙


Tags: inauthhttpurl网页gethtml页面
1条回答
网友
1楼 · 发布于 2024-10-04 03:16:01

在我看来,一个非常方便的方法是使用selenium webdriver远程控制您的浏览器来完成此任务。有人可能会说,为了这个目的使用一个完整的测试框架是一种过激的做法,但是它很简单,如下所示:how-to-submit-http-authentication-with-selenium-python-binding-webdriver

如果您喜欢坚持请求,您可能希望使用Robobrowser,它是在它的基础上构建的一个新框架,它集成了mechanize来填写表单(这里是文档中的一个示例):

from robobrowser import RoboBrowser

browser = RoboBrowser()
browser.open('http://twitter.com')

# Get the signup form
signup_form = browser.get_form(class_='signup')
signup_form         # <RoboForm user[name]=, user[email]=, ...

# Inspect its values
signup_form['authenticity_token'].value     # 6d03597 ...

# Fill it out
signup_form['user[name]'].value = 'python-robot'
signup_form['user[user_password]'].value = 'secret'

# Serialize it to JSON
signup_form.serialize()         # {'data': {'authenticity_token': '6d03597...',
                                #  'context': '',
                                #  'user[email]': '',
                                #  'user[name]': 'python-robot',
                                #  'user[user_password]': ''}}

# And submit
browser.submit_form(signup_form)

Beautiful soup也包含在Robobrowser中,因此您可以在登录后立即开始解析源代码

相关问题 更多 >