屏幕使用python(服务器端)抓取一个站点

时间:2012-01-11 02:51:58

标签: jquery python login screen-scraping

我正在创建一个代表虚拟公司网站的网站(在这种情况下,是一家虚拟面包店)。我已经设置了产品和推车系统,现在的问题是让它与虚拟银行系统一起工作。参与系统的每个人都有一个帐户,我也是。现在,我对Python非常陌生,我已经使用了很多先前创建的脚本,并根据我的需要略微编辑它们。

我的问题......

  • 如何使用python?
  • 登录第三方网站
  • 如何在登录后点击网站上的按钮(基本上运行javascript)?

很抱歉,我会在我尝试访问的网站中添加一个链接,但是,目前似乎已经关闭了。多么方便。

2 个答案:

答案 0 :(得分:4)

我建议您查看机械化以登录:http://wwwsearch.sourceforge.net/mechanize/

点击按钮时,请查看以下答案:https://stackoverflow.com/a/1806266/1104941

编辑:

其他有用的链接:

答案 1 :(得分:0)

不幸的是,没有一种非常好的方法可以在Python(或浏览器之外的任何东西)的上下文中遍历依赖Javascript的站点。即使您使用Mechanize与python-spidermonkey,或者其他形式的Javascript桥接器与Python(可能是pyV8),这些桥梁本身也不会模拟DOM。因此,任何处理UI交互的Javascript都无法正常运行。

但是,如果您希望登录的网站不依赖于Javascript,则完全可以遍历该网站。我的建议是使用Kenneth Reitz的requests模块。您可以执行以下操作:

import requests

# To handle logins you'll most likely need to maintain a session
# if the site you login to usually expects a human
s = requests.session() # starts a session

# Next you want to login to the site
s.post("http://somesite.com/login", data={"u": "username", "p": "password"})

# Now you're logged in and you can do anything you want 
# using the session instance 
response_data = s.get("http://somesite.com/awesome-page-id-like-to-grab")

# Do something with the response data ...
my_response_parsing_function(response_data.content)

还有其他方法可以使用python标准库,但请求处理所有那些非常严格的东西。