【发布时间】:2017-10-04 16:29:15
【问题描述】:
我正在尝试创建一个自动获取网页上表格内容的 python 脚本。 我设法让它在纯 html 页面上工作,但是有一个网站让我头疼...... html 似乎是由 javascript 生成的。 我从几个帖子中找到的示例中尝试了dryscrape,selenium和qt4库,但仍然没有成功......我只是在javascript完成他的工作之前一直得到html......所以没有表格...... 我可以在浏览器上看到表格,当我使用 Chrome 执行“检查”html 时。当我在 Chrome 中执行“查看页面源代码”时,表格也不存在......可能这可以提供一些提示。
网站如下:
https://www.ictax.admin.ch/extern/en.html#/security/CH0008899764/20161231
这是我尝试过的一些代码(如果你检查,答案中没有表格标签):
使用 urllib2:
import urllib2
url="https://www.ictax.admin.ch/extern/en.html#/security/CH0008899764/20161231"
html = urllib2.urlopen(url)
print html
使用干刮:
import dryscrape
session = dryscrape.Session()
session.visit(url)
response = session.body()
print response
使用硒:
from selenium import webdriver
driver = webdriver.Chrome("/usr/lib/chromium/chromedriver")
driver.get(url)
print driver.page_source #page_source fetches page after rendering is complete
driver.quit()
使用 PyQt4
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
from lxml import 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.frame = self.mainFrame()
self.app.quit()
#This does the magic.Loads everything
r = Render(url)
#result is a QString.
result = r.frame.toHtml()
#QString should be converted to string before processed by lxml
formatted_result = str(result.toAscii())
print formatted_result
如果有人能在这方面给我一些帮助,我将不胜感激:-)
干杯
【问题讨论】:
-
你能发布一些你试过但没有用的代码吗?
-
看看这个:stackoverflow.com/questions/43423656/… 你想尝试使用 PhantomJS 驱动等待 JS 加载页面内容。
-
@DeanFenster 我发布了一些不起作用的代码(返回没有表格的 html)
-
感谢@elena 的链接!我试过了,但我得到了同样的结果:html 代码作为回报,但里面没有表格...... :-(
标签: javascript python html web-scraping