我想不登录会话就自动登录网页,通过其搜索栏搜索内容,并从结果列表中加载最后一个搜索结果的HTML。有人对如何执行此操作有任何指示吗?
与Google之类的网站不同,搜索后的最终URL不会更改。似乎搜索栏发送了有关搜索请求的表格,并更改了网页的内部html,而没有更改标题url,这使事情变得更加困难
如果您想知道这是干什么的,我正在做一些网页抓取工作。
我尝试制作一个HTML,该HTML自动提交一个类似于登录页面和搜索栏形式的表单:
<body onload="document.frm1.submit()">
<form action="http://XXXXX.com/login" name="frm1">
<input type="text" name="username" value="Smith" />
<input type="password" name="password" value="12345" />
</form>
</body>
有效。但是,当网页的HTML非常复杂时,它将变得非常复杂。现在,我只是根据我在F12中检查HTML的内容尝试模仿它。同样,此方法不允许操作链。登录后,我将无法搜索项目。而且该页面似乎不存储会话,因为当我打开一个新选项卡时,我必须再次登录,但是我不太确定。
我试图直接通过浏览器的检查元素>>网络功能查看http标头。但是我仍然没有弄清楚到底如何使用那里的信息。
我也尝试了硒(python),但是它的sendkeys功能太慢了,特别是当我只能使用Internet Explorer时(每个字符几秒钟!)。即使我使用硒,我也不知道为什么,但是网页中的某些按钮无法单击。
对于第二部分(获取html),我也没有做,但是我想我只会使用BeautifulSoup之类的标准库?
我需要处理一些网站。其中之一是https://www.mdsystem.com
更新: 我尝试从chrome >> insepct elemenets >> networks复制表单数据,并使用python库请求发送表单。但是,它返回以下内容:
<html lang="en-US">
<head>
<script language="javascript" type="text/javascript">
if (window['AdfPage'] && AdfPage.PAGE && AdfPage.PAGE.__getSessionTimeoutHelper())
AdfPage.PAGE.__getSessionTimeoutHelper().__alertTimeout();
else {
alert('Because of inactivity, your session has timed out and is no longer active. Click OK to reload the page.');
window.location.replace(window.location.href);}
</script>
</head></html>
这很奇怪。如果我从浏览器手动提交表单,它将显示搜索结果。