Python爬虫 requests使用post请求登录需要验证码的网站

2023-05-16

具体代码为:

import requests
from bs4 import BeautifulSoup

s = requests.Session()

get_url = 'http://so.gushiwen.org/user/login.aspx?from=http://so.gushiwen.org/user/collect.aspx'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36',
}

r = s.get(url=get_url, headers=headers)

soup = BeautifulSoup(r.text, 'lxml')
a = soup.select('#__VIEWSTATE')[0].attrs.get('value')
b = soup.select('#__VIEWSTATEGENERATOR')[0].attrs.get('value')

# 获取验证码图片的url
image_url = 'http://so.gushiwen.org' + soup.select('#imgCode')[0].attrs.get('src')
# 将图片下载到本地
# print(image_url)
# import urllib.request
r = s.get(image_url)
# urllib.request.urlretrieve(image_url, './yanzhengma.jpg')
with open('./yanzhengma.jpg', 'wb') as fp:
    fp.write(r.content)

# 让用户输入验证码
code = input('请输入验证码:')

post_url = 'http://so.gushiwen.org/user/login.aspx?from=http%3a%2f%2fso.gushiwen.org%2fuser%2fcollect.aspx'
data = {
    '__VIEWSTATE': a,
    '__VIEWSTATEGENERATOR': b, 
    'from': 'http://so.gushiwen.org/user/collect.aspx',
    'email': '17312345678', # 账号
    'pwd': '123456',  # 密码
    'code': code,  # 验证码
    'denglu': '登录',
}

r = s.post(post_url, headers=headers, data=data)

print(r.text)

这里的图片验证码需要注意的是,要携带着一些信息去下载,否则每次都会改变验证码,本例中就是携带着cookies去下载的图片,然后在本地查看后输入验证码进行模拟登陆

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python爬虫 requests使用post请求登录需要验证码的网站 的相关文章

随机推荐