Python 无法解析';数据';用于登录

Python 无法解析';数据';用于登录,python,python-3.x,web-scraping,beautifulsoup,python-requests,Python,Python 3.x,Web Scraping,Beautifulsoup,Python Requests,我正在尝试使用python登录我的大学网站,我想要欢迎页面的源代码,即我的仪表板,但当我运行此操作时,我得到的源代码与登录页面的源代码相同。这是因为我无法在登录表单上发布我的信息吗?这是密码 import requests from bs4 import BeautifulSoup from lxml import html import collections url = 'http://erp.college_name.edu/' opening = requests.ge

我正在尝试使用python登录我的大学网站,我想要欢迎页面的源代码,即我的仪表板,但当我运行此操作时,我得到的源代码与登录页面的源代码相同。这是因为我无法在登录表单上发布我的信息吗?这是密码

 import requests
 from bs4 import BeautifulSoup 
 from lxml import html
 import collections

 url = 'http://erp.college_name.edu/'

 opening = requests.get(url)
 r = requests.session()
 stuff= collections.OrderedDict()

 stuff = {

'tbUserName': 'my_username',
'tbPassword': 'my_password',


   }

opens = r.post(url=url, data=stuff)  
soup = BeautifulSoup(opens.text, 'lxml')  
print(soup)

有什么帮助吗?

您可能没有正确登录。理想情况下,该网站将为您提供一个非200状态代码,您可以使用
opens.status\u code
进行检查。成功的请求应以2开头(例如
200
)。请注意,即使您的请求不正确,某些站点也不会提供合理的状态代码。

您可能没有正确登录。理想情况下,该网站将为您提供一个非200状态代码,您可以使用
opens.status\u code
进行检查。成功的请求应以2开头(例如
200
)。请注意,即使您的请求不正确,某些网站也不会提供合理的状态代码。

更新
那么在拿到代币之后 导入集合

 url = 'http://erp.name_of_college.edu/'

 opening = requests.get(url)
 tree = html.fromstring(opening.text)
 token = list(set(tree.xpath("//input[@name='name_of_token']/@value")   
[0])) 

 r = requests.session()
 data = collections.OrderedDict()
 datas = {

   'tbUserName': 'my_username',
   'tbPassword': 'my_password',
   'name_of_token' : token,


 }

 opens = r.post(url=url, data=datas)
 soup = BeautifulSoup(opens.text, 'lxml')
 print(soup)   

问题解决后,您需要在解析数据中包含标记,这些标记通常被命名为隐藏在类中,如果问题出现,则需要包含表单中的更多数据;)

更新
那么在拿到代币之后 导入集合

 url = 'http://erp.name_of_college.edu/'

 opening = requests.get(url)
 tree = html.fromstring(opening.text)
 token = list(set(tree.xpath("//input[@name='name_of_token']/@value")   
[0])) 

 r = requests.session()
 data = collections.OrderedDict()
 datas = {

   'tbUserName': 'my_username',
   'tbPassword': 'my_password',
   'name_of_token' : token,


 }

 opens = r.post(url=url, data=datas)
 soup = BeautifulSoup(opens.text, 'lxml')
 print(soup)   

问题解决后,您需要在解析数据中包含标记,这些标记通常被命名为隐藏在类中,如果问题出现,则需要包含表单中的更多数据;)

你从哪里得到的错误?查看页面上的登录表单。通常,您必须返回一个隐藏的输入字段,以防止CSRF攻击。@fodma1我没有收到错误,但得到的是登录页面的sourcec代码,而不是我的仪表板,是的,(这意味着表单没有得到im解析的信息或CSRF问题)我做了但没有得到结果的令牌,(见问题中的更新)在POST请求中,您在哪里找到要发送的字段?假设您是通过浏览器控制台找到这些字段的,我会搜索您的浏览器发送的其他一些标题,并尝试将这些标题包含在您的请求中。这可能有点傻,就像服务器检查合理的用户代理一样。@supersam654我在cl表单下找到了所有信息ass,我还需要传递什么信息?@supersam654好的,我在终端上运行了这个,得到了这个,
Traceback(最近一次调用):文件“”,第1行,在文件“C:\Users\HUNTER\AppData\Local\Programs\Python35-32\lib\encodings\cp437.py”的第19行,在encode return codeces.charmap\encode中(输入、自身错误、编码映射)[0]UnicodeEncodeError:“charmap”编解码器无法对5760位置的字符“\xa9”进行编码:字符映射到
哪里出错?请查看页面上的登录表单。通常,您必须发回一个隐藏的输入字段,以防止CSRF攻击。@fodma1我没有收到错误,而是获取登录页面的sourcec代码我的仪表板,是的,(这意味着,要么表单没有得到im解析的信息,要么CSRF问题)我做了标记,但没有得到结果(参见问题中的更新)在POST请求中,您在哪里找到要发送的字段?假设您是通过浏览器控制台找到这些字段的,我会搜索您的浏览器发送的其他一些标题,并尝试将这些标题包含在您的请求中。这可能有点傻,就像服务器检查合理的用户代理一样。@supersam654我在cl表单下找到了所有信息ass,我还需要传递什么信息?@supersam654好的,我在终端上运行了这个,得到了这个,
Traceback(最近一次调用):文件“”,第1行,在文件“C:\Users\HUNTER\AppData\Local\Programs\Python35-32\lib\encodings\cp437.py”的第19行,在encode return codeces.charmap\encode中(输入,自身.errors,encoding_-map)[0]UnicodeEncodeError:“charmap”编解码器无法对5760位置的字符“\xa9”进行编码:字符映射到
作为打印的响应,我得到200(打开.status_-code)我会将输出保存为HTML页面,并在浏览器中打开它。查看页面上是否有错误或指示出错的内容。实际上,url是
'https://erp.name_of_college.edu/“
但我没有使用
http://
而不是
https://
,因为它给了我
请求。异常。错误:(“错误的握手:SysCallError(-1,'意外的EOF')”)
当我只尝试获取登录页面的源代码时,但在
http://.
的情况下不一样。这可能是原因吗?
print(opens.status\u code)的响应是200
我会将输出保存为HTML页面,并在浏览器中打开它。查看页面上是否有错误或指示出错的内容。实际上,url是
'https://erp.name_of_college.edu/“
但我没有使用
http://
而不是
https://
,因为它给了我
请求。异常。错误:(“握手错误:SysCallError(-1,'意外的EOF')”)
当我只尝试获取登录页面的源代码时,但在
http://的情况下情况不同。
这可能是一个原因吗?