用Python(服务器端)抓取网站数据
我正在创建一个网站,代表一个虚拟公司的网页(在这个例子中,是一个虚拟的面包店)。我已经设置好了产品和购物车系统,现在的问题是如何让它和虚拟银行系统一起工作。系统中的每个人都有一个账户,我也有。现在,我对Python还很陌生,主要是使用一些之前写好的脚本,然后稍微修改一下以满足我的需求。
我的问题是...
- 我该如何用Python登录一个第三方网站?
- 登录后,我又该如何点击网站上的按钮(基本上就是运行JavaScript)?
抱歉,我本想提供一个我想访问的网站链接,但现在似乎网站无法访问。真是太巧了。
2 个回答
0
很遗憾,从Python(或者任何不在浏览器里的东西)去访问一个依赖Javascript的网站并没有很好的办法。即使你使用像Mechanize和python-spidermonkey这样的工具,或者其他一些Python和Javascript之间的桥接工具(比如pyV8),这些桥接工具也不能模拟网页的结构(DOM)。所以,任何需要与用户界面互动的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的标准库,但requests模块可以处理所有那些繁琐的细节。
4
我建议你看看 mechanize 这个工具,用来登录网站:http://wwwsearch.sourceforge.net/mechanize/
如果你想了解如何点击按钮,可以参考这个回答:https://stackoverflow.com/a/1806266/1104941
补充:
还有一些有用的链接: