我们使用的是urllib2库。问题是图表默认设置会排除某些数据,使这些数据不会出现在网页源代码中。因此,我们需要在检索网页源代码之前与该页面进行交互。 默认情况下,如果在下面这行代码下面查看: 设置 你会看到: _chartConfigObject.defaultInterval = '86400';
我们需要将其更改为:
_chartConfigObject.defaultInterval = '1800';
我们能否使用Selenium来实现这一点?是否还有其他方法,比如使用保存在我的浏览器cookie中的默认设置,在检索URL源代码之前自动设置正确的间隔?
2. 解决方案
我们可以使用Selenium WebDriver来解决这个问题。Selenium WebDriver是一个用于浏览器自动化的框架,它允许我们以编程的方式与网页元素进行交互。我们可以通过以下步骤使用Selenium WebDriver来更改图表属性:
- 首先,我们需要使用Selenium WebDriver创建一个浏览器实例。我们可以使用以下代码创建一个Chrome浏览器实例:
from selenium import webdriver
http://www.jshk.com.cn/mb/reg.asp?kefu=xiaoding;//爬虫IP免费获取;
driver = webdriver.Chrome()
- 接下来,我们需要导航到Google财经页面。我们可以使用以下代码导航到该页面:
driver.get("http://www.google.com/finance?q=EPA:RNO")
- 现在,我们需要等待页面加载完成。我们可以使用以下代码等待页面加载完成:
driver.implicitly_wait(10)
- 页面加载完成后,我们需要找到用于更改图表属性的元素。我们可以使用以下代码找到该元素:
element = driver.find_element_by_xpath("//span[@class='settings-link']")
- 找到该元素后,我们需要单击它以打开设置菜单。我们可以使用以下代码单击该元素:
element.click()
- 设置菜单打开后,我们需要找到用于更改图表间隔的元素。我们可以使用以下代码找到该元素:
element = driver.find_element_by_xpath("//select[@id='interval']")
- 找到该元素后,我们需要选择要更改的图表间隔。我们可以使用以下代码选择图表间隔:
element.select_by_value("1800")
- 最后,我们需要关闭设置菜单。我们可以使用以下代码关闭该菜单:
element = driver.find_element_by_xpath("//div[@class='dialog-close-x']")
element.click()
以上步骤就完成了使用Selenium WebDriver更改图表属性的操作。
除了使用Selenium WebDriver,我们还可以使用其他方法来更改图表属性。一种方法是使用默认保存在浏览器cookie中的设置。我们可以使用以下代码获取浏览器cookie:
import requests
cookies = requests.get("http://www.google.com/finance?q=EPA:RNO").cookies
获取浏览器cookie后,我们可以使用以下代码将cookie添加到请求中:
headers = {
"Cookie": cookies
}
response = requests.get("http://www.google.com/finance?q=EPA:RNO", headers=headers)
这样,我们就可以使用默认保存在浏览器cookie中的设置来获取网页源代码。
我希望这些信息对您有所帮助!