如何通过Python以编程方式访问网站中的JavaScript变量
我甚至不知道这是否可行,但我希望有一种方法可以通过Python自动收集JavaScript对象中保存的数据。作为一个例子,我试图从中访问图表数据 我认为最简单的方法是通过如何通过Python以编程方式访问网站中的JavaScript变量,javascript,python,Javascript,Python,我甚至不知道这是否可行,但我希望有一种方法可以通过Python自动收集JavaScript对象中保存的数据。作为一个例子,我试图从中访问图表数据 我认为最简单的方法是通过请求模块,只需查找保存数据的SVG元素,例如dom。选择('.c3 chart line.c3 chart line.c3 shapes Bitcoin circle'),其中dom是调用BeautifulSoup得到的对象,然后使用.get>('cy')获取值。但是,如果将cy属性的值与图表上的实际值进行比较,则它们不会对齐
请求
模块,只需查找保存数据的SVG元素,例如dom。选择('.c3 chart line.c3 chart line.c3 shapes Bitcoin circle')
,其中dom
是调用BeautifulSoup
得到的对象,然后使用.get>('cy')
获取值。但是,如果将cy
属性的值与图表上的实际值进行比较,则它们不会对齐
然而,我意识到我可以打开开发者控制台,通过console.log(CryptoCurrencyChart.chart.data());
访问数据。为了将这些数据保存到文本文件中,我必须在网页上创建一个链接,将base-64编码的数据作为href,然后手动单击链接
我的问题是,这是否可以通过Python之类的编程实现,这样我就可以为将来的数据采集自动化。您可以使用Selenium获取
CryptoCurrencyChart.chart.data()
对象
#!/usr/bin/env python
from selenium import webdriver
link = 'http://cryptocurrencychart.com/top/10'
class Scraper(object):
def __init__(self):
options = webdriver.ChromeOptions()
options.add_argument('headless')
options.binary_location = '/usr/bin/google-chrome-unstable'
options.add_argument('window-size=1200x600')
self.driver = webdriver.Chrome(chrome_options=options)
def scrape(self):
self.driver.get(link)
result = self.driver.execute_script('return CryptoCurrencyChart.chart.data()')
self.driver.quit()
return result
if __name__ == '__main__':
scraper = Scraper()
scraper.scrape()
运行self.driver.execute_脚本('return CryptoCurrencyChart.chart.data()')
将为您提供3个数组,每个数组包含360个元素