Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python:使用随机属性刮取站点_Python_Html_Web Scraping_Web Crawler - Fatal编程技术网

python:使用随机属性刮取站点

python:使用随机属性刮取站点,python,html,web-scraping,web-crawler,Python,Html,Web Scraping,Web Crawler,全面披露:我对网页抓取是全新的,我对html的经验非常有限。如果我做错了什么,或者你需要更多信息,请告诉我 私人内容:我的密码、我的用户名、我的学校、网站2 我的目标:浏览学校网页(https://SITE2.MY_SCHOOL.edu/Main_Page.Asp?Page=Select_Subject),我可以通过我的学生帐户访问 网站信息:当我输入https://SITE2.MY_SCHOOL.edu/在浏览器上,我会被重定向到https://login.MY_SCHOOL.edu/?App

全面披露:我对网页抓取是全新的,我对html的经验非常有限。如果我做错了什么,或者你需要更多信息,请告诉我

私人内容:我的密码、我的用户名、我的学校、网站2

我的目标:浏览学校网页(
https://SITE2.MY_SCHOOL.edu/Main_Page.Asp?Page=Select_Subject
),我可以通过我的学生帐户访问

网站信息:当我输入
https://SITE2.MY_SCHOOL.edu/
在浏览器上,我会被重定向到
https://login.MY_SCHOOL.edu/?App=J4200
登录我的学校帐户

登录后,我会被重定向回
https://SITE2.MY_SCHOOL.edu/Main_Page.Asp?Page=Select_Subject
(我要刮的页面)

问题:刷新
https://login.MY_SCHOOL.edu/?App=J4200
,输入id/类型“password”的name属性随机化,输入名称“EncryptedStamp”的value属性随机化。我能够从加载的页面获得所有这些信息,如下所示。当我调用
session.post('https://login.MY_SCHOOL.edu/?App=J4200,数据=形式)

导入请求,lxml.html s=请求。会话() login=s.get(“https://login.MY_SCHOOL.edu/") login\u html=lxml.html.fromstring(login.text) hidden_inputs=login_html.xpath(r'//form//input[@type=“hidden”]”) #输入类型“password”的名称标记在刷新时会更改 #请参见下面的示例表单 password\u input=login\u html.xpath(r'//form//input[@type=“password”]”) 密码\名称标签=密码\输入[0]。名称 jse_id=s.cookies['JSESSIONID'] #创建用作POST请求的“数据”参数的dict form={x.attrib[“name”]:x.attrib[“value”]用于隐藏的_输入中的x} 表单['AlternateID']=“我的用户名”#AlternateID是用户名的名称标签 表单[密码\姓名标签]=“我的密码” 表格['JSSessionID']=jse_id 示例表格:

{'AlternateID': 'MY_USERNAME',
 'App': 'MY_SCHOOLNet',
 'EncryptedStamp': 'ZYWSNQLPJKMH',
 'JSESSIONID': 'EFC8B3319A63332484DFE8F90E4E0272',
 'MXVQY': 'MY_PASSWORD'}
答复:

重新运行所有表单行以更新表单:

{'AlternateID': 'MY_USERNAME', 'App': 'MY_SCHOOLNet', 'EncryptedStamp':'ZYWSNQLPJKMH', 'JSESSIONID':'EFC8B3319A63332484DFE8F90E4E0272', 'RYCSX': 'MY_PASSWORD'} {'AlternateID':'MY_USERNAME', “应用程序”:“我的学校网”, “EncryptedStamp”:“ZYWSNQLPJKMH”, “JSSessionId:”EFC8B319A6332484DFE8F90E4E0272“, 'RYCSX':'MY_PASSWORD'} 我认为解决方案是:在不刷新页面的情况下更新页面,以防止两个属性发生更改。但我不知道怎么做。谷歌说要使用JQuery,但这是一个陡峭的学习曲线,我甚至可能得不到结果


感谢阅读,我期待任何建议。

我用一个名为RoboBrowser的python库解决了我的问题 {'AlternateID': 'MY_USERNAME', 'App': 'MY_SCHOOLNet', 'EncryptedStamp':'ZYWSNQLPJKMH', 'JSESSIONID':'EFC8B3319A63332484DFE8F90E4E0272', 'RYCSX': 'MY_PASSWORD'}