Python-手动登录浏览器后从urllib2恢复web会话

Python-手动登录浏览器后从urllib2恢复web会话,python,browser,login,web-scraping,Python,Browser,Login,Web Scraping,比如说,我浏览到一个需要登录才能访问内容的网站(也在内联网上)。我将填写必填字段。。。e、 g.从浏览器本身登录所需的用户名、密码和任何验证码等 一旦我登录到该网站,有很多好东西,可以刮从几个链接和标签上的第一页登录后 现在,从现在开始(即从浏览器登录后)。。我想控制页面并从urllib2下载。。。比如一页一页地浏览,下载每一页的pdf和图片,等等 我知道我们可以直接使用urllib2(或mechanize)中的所有内容(即登录到页面并完成全部工作) 但是,对于某些网站。。仔细检查并找出登录机制

比如说,我浏览到一个需要登录才能访问内容的网站(也在内联网上)。我将填写必填字段。。。e、 g.从浏览器本身登录所需的用户名、密码和任何验证码等

一旦我登录到该网站,有很多好东西,可以刮从几个链接和标签上的第一页登录后

现在,从现在开始(即从浏览器登录后)。。我想控制页面并从urllib2下载。。。比如一页一页地浏览,下载每一页的pdf和图片,等等

我知道我们可以直接使用urllib2(或mechanize)中的所有内容(即登录到页面并完成全部工作)

但是,对于某些网站。。仔细检查并找出登录机制、所需的隐藏参数、推荐人、验证码、cookie和弹出窗口确实是一件痛苦的事情

请告知。希望我的问题有意义


总之,我希望使用web浏览器手动完成初始登录部分。。。然后接管通过urllib2进行刮取的自动化。

您想使用
cookielib
模块

您可以使用浏览器登录,然后将cookie导出到Netscape样式的
cookie.txt
文件中。然后从python中,您将能够加载它并获取所需的资源。cookie将一直有效,直到网站使您的会话过期(通常约30天)

Chrome和Firefox的附加组件将以这种格式导出cookie。例如:


你考虑过吗?这是关于浏览器自动化而不是http请求(urllib2),您可以在两个步骤之间操作浏览器。

您所要求的是复杂而模糊的。。。尽量说得更具体些对不起。。我现在会编辑,看看我是否可以更具体。我不认为这一切都那么复杂或模糊。。。我真的很惊讶以前没人问过。我做了大量的挖掘工作,没有找到任何副本。虽然编辑是必要的,但我不认为真的需要否决投票。这是一个有趣的问题,可以从第一次迭代中理解其含义。@iLightower也许您可以标记最接近解决问题的答案?谢谢您的回答。。我想要最初的零件手册和后来的零件自动。。例如,由于验证码。使用mechanize,我仍然无法在post中发送所需的验证码字段。但是,如果我使用浏览器。。我可以正常登录并输入验证码,并且只能通过mechanize或urllib2执行自动化部分。如果有验证码,您肯定需要手动浏览器部分。因此,使用真正的浏览器登录,然后导出cookie.txt文件,然后将其加载到MozillaCookieJar中,并使用urllib2或mechanize。Urllib2几乎肯定足够了。@jleahy。我尝试使用firefox cookies使用您的方法。并且,在浏览到该页面后。。并导出cookie。我在我的url中使用了上面的代码。但是,该页面仅转到登录起始页。即使使用cookies和会话id,我也无法进入该站点。有什么想法吗。。如何改进和审核?这无助于通过验证码。不,但您可以在Selenium脚本中构建暂停,以便自己与Selenium控制的浏览器交互。啊,当然。出于某种原因,我认为硒就像机械化一样,但我现在记得它比机械化多得多。这可能比我的解决方案更简洁。我知道硒,并在您的评论后重新考虑了它。它不知怎么起作用了。。就像在录制会话后运行默认python脚本一样。。。我现在可以从PythonIdle中控制浏览器并对其进行测试,它以某种方式工作。。。。1) 但是,我现在可以使用urllib2在同一脚本中打开后续页面吗。。通过selenium而不是使用driver.get()进入站点后发送POST参数等。。。2) 我能看不到浏览器窗口吗?。请告知。不,那将非常困难。selenium浏览器具有该会话。
import cookielib, urllib2
cj = cookielib.MozillaCookieJar()
cj.load('cookie.txt')
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/resource")