免责声明:我真的不是程序员。我渴望学习,但是我的经验在20年前的c64和几天学习Python的基础上非常基础。
我刚刚开始一个相当大的(对于我作为初学者)屏幕抓取项目。到目前为止,我一直在使用python和mechanize + lxml进行浏览/解析。现在我遇到了一些非常重要的javascript页面,如果没有启用javascript就没有显示任何内容,这意味着机械化的麻烦。
从我的搜索中我得出结论,我基本上有几个选择:
试着弄清楚javascript在做什么模仿我的代码(我不知道从哪里开始。; - ))
使用pywin32控制Internet Explorer或类似的东西,比如使用pyqt4中的webkit-browser,甚至使用telnet和mozrepl(这看起来真的很难)
将语言切换为perl,因为www :: Mechanize似乎在per(addons等javascript)上更加成熟。完全不了解这一点。
如果有人在这里有一些指针会很棒。我知道我需要做很多试验和错误,但如果有这样的事情我会不会离“真正的”答案太远。
答案 0 :(得分:1)
您可以在其他地方找到您要查找的数据。尝试使用firefox中的web-developer工具栏查看javascript正在加载的内容。您可以在js文件中找到数据。
否则,您可能需要使用Mechanize。您可能会在这里找到两个有用的教程:
答案 1 :(得分:0)
第四个选项可能是使用browserjs
。
这应该是在Mozilla Rhino或其他一些命令行javascript引擎中运行浏览器环境的一种方法。据推测,你可以(至少在理论上)在该环境中加载页面,并在JS使用它之后转储HTML。
我自己并没有真正使用它,我尝试了几次,但发现它对我的目的来说太慢了。虽然我没有尝试过,但是你可能需要设置一个选项或者其他一些选项。
答案 2 :(得分:0)
我使用Chickenfoot执行简单任务,使用python-webkit执行更复杂的操作。对两者都有很好的经验。
以下是呈现网页(包括执行任何JavaScript)并返回结果HTML的代码段:
class Render(QWebPage):
def __init__(self, url):
self.app = QApplication(sys.argv)
QWebPage.__init__(self)
self.loadFinished.connect(self._loadFinished)
self.mainFrame().load(QUrl(url))
self.app.exec_()
def _loadFinished(self, result):
self.html = str(self.mainFrame().toHtml())
self.app.quit()
html = Render(url).html
答案 3 :(得分:0)
对于非程序员,我建议使用IRobotSoft。它是面向视觉和完整的JavaScript支持。缺点是它只在Windows上运行。好处是你可以通过反复试验成为专家来学习软件。