当前位置:首页 » 编程语言 » python登陆网页

python登陆网页

发布时间: 2024-09-20 05:08:39

python模拟登录知乎,为什么403 forbidden了

1. 找到正确的登录链接,应该是:self.baseUrl + '/login/email'
2. 这个request.Request(self.baseUrl + '/#signin', postdata.encode('utf-8'))没用过不清楚,所以不知道有没有带上前两个请求的cookies。我是改成:
self.opener.open(self.baseUrl + '/login/email', postdata.encode('utf-8'))这样访问的。

通常登录403问题都是:
1. 登录api不对,
2. 前后访问没有带cookies,导致token无效、验证码无效。

附上改后的,只会用requests的我,请勿喷啊~~~:
import cookielib,urllib2
import re,urllib,json

class ZhiHuSpider(object):
def __init__(self):
self.baseUrl = 'http://www.hu.com/'
self.captchaUrl = 'http://www.hu.com/captcha.gif?r='
self.cookies = cookielib.CookieJar()
self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookies))
# 获取网页xsrf值
def getXsrf(self):
html = None
html = self.opener.open(self.baseUrl).read().decode('utf-8')
xsrf_match = re.search(r'name="_xsrf" value="(.*?)"/>', html)
if xsrf_match:
return xsrf_match.group(1).strip()

# 将验证码保存在本地
def getCaptchaCode(self):
data = self.opener.open(self.captchaUrl).read()
fName = self.captchaUrl.split('/')[3].split('?')[0]
f = open(fName, 'wb')
f.write(data)
f.close()
print(u'验证码已保存在本地!请查看!')

# 模拟登录知乎
def login(self):
form = { '_xsrf': self.getXsrf(),
'email': '[email protected]',
'password': 'password' }
self.getCaptchaCode()
code = input(u'请输入验证码:')
form['captcha'] = code
postdata = urllib.urlencode(form)#parse.urlencode(form)
op = self.opener.open(self.baseUrl + '/login/email', postdata.encode('utf-8'))
#req = request.Request(self.baseUrl + '/#signin', postdata.encode('utf-8'))
a = op.read().decode()
a=json.loads(a)
print a,type(a)
print a['msg']

if __name__ == '__main__':
spider = ZhiHuSpider()
spider.login()

② python中模拟登陆成功如何跳转到主页

参考这个可以了,http://www.bubuko.com/infodetail-699326.html
#以post的方法访问登陆页面,访问之后cookieJar会自定保存cookie
opener.open(login_page,data)
#以带cookie的方式访问页面,这样跳转主页就可以了
op=opener.open(url)
附上部分代码如下:
def login(self,login_url):
data = {
'email': self.email,
'password': self.passwd
}
post_data = urllib.urlencode(data)
req = urllib2.Request(login_url,post_data, self.headers)
response = self.opener.open(req)
content = response.read()
pagesoup = BeautifulSoup(content,fromEncoding = 'utf-8')
return pagesoup

def recent_visit(self,soup):
title = soup.html.head.title
print title.renderContents().strip()
app_link_url = soup.find('li',{'class':'app-nav-item app-homepage'}).a['href']
print app_link_url #人人网主页
app_link_op = self.opener.open(app_link_url)#跳转主页
app_link_soup = BeautifulSoup(app_link_op.read(),fromEncoding = 'utf-8')

③ 使用python是否能打开网页

可以啊,不仅可以打开,还可以将网页的内容爬取下来

下面这段代码就可以实现:

importurllib.request

#网址
url="http://www..com/"

#请求
request=urllib.request.Request(url)

#爬取结果
response=urllib.request.urlopen(request)

data=response.read()

#设置解码方式
data=data.decode('utf-8')

#打印结果
print(data)

#打印爬取网页的各类信息

print(type(response))
print(response.geturl())
print(response.info())
print(response.getcode())

它的运行结果如下:

你可以拷贝到自己的运行环境去试一试

④ python+selenium怎样循环登陆账号

楼主可以事先将账号和密码存储在一个字典中,也可以用pandas读取账号密码信息,为方便展示,我就将账号信息储存在一个字典中,具体的代码如下:
from selenium import webdriver
# 账号和密码信息
user_information = { "username1": "password1", "username2": "password2", "username3": "password3"}
# 使用循环遍历字典进行账号登录
for username, password in user_information.items():
# 创建WebDriver对象,可根据实际情况选择合适的浏览器驱动(如ChromeDriver)
driver = webdriver.Chrome()

# 访问登录页面

driver.get("https://example.com/login") # 替换为实际的URL

# 输入账号_name("username") 替换为实际的用户名输入框元素定位方式 username_input = driver.find_element_by_name("username") .send_keys(username)
password_input = driver.find_element_by_name("password") .send_keys(password)
# 替换为实际的提交按钮元素定位方式

submit_button.click()

# 在此添加其他操作或验证登录结果的代码

# 关闭浏览器窗口

driver.quit()

⑤ 如何用django做登录界面(2023年最新解答)

导读:本篇文章首席CTO笔记来给大家介绍有关如何用django做登录界面的相关内容,希望对大家有所帮助,一起来看看吧。

PythonDjango写登陆注册界面,怎么实现分教师端和学生端不同的注册登录

网页链接

这个网页看下,学生和教师登陆这个就学要两个操作系统了,不过部分用相同的数据表,就是做一个出来,另一个就好写了。

django怎么写一个登录界面

Djangoforms使用容易,又方便扩展,因此Djangoadmin和CBVs基本都基于forms使用.事实上,由于djangoforms的强大验证功能,大多数DjangoAPI框架都是用forms作为其验证的一部分.虽然djangoforms的学习需要花费一点时间,但如果将forms,mod

django如何在用户登录后返回到原来来页面,并保持登陆状态

任何页面的头部显示登录状态的部分应该是一个block,其他页面继承此block,这个block里面写上初始化js,从后台获取登录状态

pythondjango做了个web,在登录界面我想直接调用系统的login模板,可是每次登录成功之后就跳到

系统的login.html里包含一个重定向URL的next隐藏域。有这么一行:

inputtype="hidden"name="next"value="{{next}}"/

登陆以后跳转到系统默认的/accounts/profile

你把value改成你想要跳转的url或者给next重新传一个url也行

结语:以上就是首席CTO笔记为大家介绍的关于如何用django做登录界面的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。

⑥ 如何用 Python 爬取需要登录的网站

最近我必须执行一项从一个需要登录的网站上爬取一些网页的操作。它没有我想象中那么简单,因此我决定为它写一个辅助教程。

在本教程中,我们将从我们的bitbucket账户中爬取一个项目列表。

教程中的代码可以从我的Github中找到。

我们将会按照以下步骤进行:

  • 提取登录需要的详细信息

  • 执行站点登录

  • 爬取所需要的数据

  • 在本教程中,我使用了以下包(可以在requirements.txt中找到):

    Python

    1

    2

  • requests

    lxml

  • 步骤一:研究该网站

    打开登录页面

    进入以下页面 “bitbucket.org/account/signin”。你会看到如下图所示的页面(执行注销,以防你已经登录)

    仔细研究那些我们需要提取的详细信息,以供登录之用

    在这一部分,我们会创建一个字典来保存执行登录的详细信息:

    1. 右击 “Username or email” 字段,选择“查看元素”。我们将使用 “name” 属性为 “username” 的输入框的值。“username”将会是 key 值,我们的用户名/电子邮箱就是对应的 value 值(在其他的网站上这些 key 值可能是 “email”,“ user_name”,“ login”,等等)。

    2. 右击 “Password” 字段,选择“查看元素”。在脚本中我们需要使用 “name” 属性为 “password”的输入框的值。“password” 将是字典的 key 值,我们输入的密码将是对应的 value 值(在其他网站key值可能是 “userpassword”,“loginpassword”,“pwd”,等等)。

    3. 在源代码页面中,查找一个名为 “csrfmiddlewaretoken” 的隐藏输入标签。“csrfmiddlewaretoken” 将是 key 值,而对应的 value 值将是这个隐藏的输入值(在其他网站上这个 value 值可能是一个名为 “csrftoken”,“authenticationtoken”的隐藏输入值)。列如:“”。

    最后我们将会得到一个类似这样的字典:

    Python

    1

    2

    3

    4

    5

  • payload = {

    "username": "<USER NAME>",

    "password": "<PASSWORD>",

    "csrfmiddlewaretoken": "<CSRF_TOKEN>"

    }

  • 请记住,这是这个网站的一个具体案例。虽然这个登录表单很简单,但其他网站可能需要我们检查浏览器的请求日志,并找到登录步骤中应该使用的相关的 key 值和 value 值。

    步骤2:执行登录网站

    对于这个脚本,我们只需要导入如下内容:

    Python

    1

    2

  • import requests

    from lxml import html

  • 首先,我们要创建session对象。这个对象会允许我们保存所有的登录会话请求。

    Python

    1

  • session_requests = requests.session()

  • 第二,我们要从该网页上提取在登录时所使用的 csrf 标记。在这个例子中,我们使用的是 lxml 和 xpath 来提取,我们也可以使用正则表达式或者其他的一些方法来提取这些数据。

    Python

    1

    2

    3

    4

    5

  • login_url = "n/?next=/"

    result = session_requests.get(login_url)

    tree = html.fromstring(result.text)

    authenticity_token = list(set(tree.xpath("//input[@name='csrfmiddlewaretoken']/@value")))[0]

  • **更多关于xpath 和lxml的信息可以在这里找到。

    接下来,我们要执行登录阶段。在这一阶段,我们发送一个 POST 请求给登录的 url。我们使用前面步骤中创建的 payload 作为 data 。也可以为该请求使用一个标题并在该标题中给这个相同的 url添加一个参照键。

    Python

    1

    2

    3

    4

    5

  • result = session_requests.post(

    login_url,

    data = payload,

    headers = dict(referer=login_url)

    )

  • 步骤三:爬取内容

    现在,我们已经登录成功了,我们将从bitbucket dashboard页面上执行真正的爬取操作。

    Python

    1

    2

    3

    4

    5

  • url = '/overview'

    result = session_requests.get(

    url,

    headers = dict(referer = url)

    )

  • 为了测试以上内容,我们从 bitbucket dashboard 页面上爬取了项目列表。我们将再次使用 xpath 来查找目标元素,清除新行中的文本和空格并打印出结果。如果一切都运行 OK,输出结果应该是你 bitbucket 账户中的 buckets / project 列表。

    Python

    1

    2

    3

    4

    5

  • tree = html.fromstring(result.content)

    bucket_elems = tree.findall(".//span[@class='repo-name']/")

    bucket_names = [bucket.text_content.replace("n", "").strip() for bucket in bucket_elems]

    print bucket_names

  • 你也可以通过检查从每个请求返回的状态代码来验证这些请求结果。它不会总是能让你知道登录阶段是否是成功的,但是可以用来作为一个验证指标。

    例如:

    Python

    1

    2

  • result.ok # 会告诉我们最后一次请求是否成功

    result.status_code # 会返回给我们最后一次请求的状态

热点内容
编译不能显示 发布:2024-11-24 23:40:52 浏览:698
人体编程 发布:2024-11-24 23:40:51 浏览:304
谜妹缓存的文件在哪 发布:2024-11-24 23:38:12 浏览:146
服务器自动清理缓存 发布:2024-11-24 23:37:14 浏览:663
中国移动网络如何查密码 发布:2024-11-24 23:37:06 浏览:581
计算机数据库试题 发布:2024-11-24 23:30:17 浏览:174
联想云教室连接不上服务器 发布:2024-11-24 23:24:31 浏览:895
七七源码 发布:2024-11-24 22:47:20 浏览:677
请访问其他页面 发布:2024-11-24 22:46:09 浏览:556
爱丢了编程 发布:2024-11-24 22:32:36 浏览:110