Scrape当前打开网页或使用其他方法获取实时HTML?

时间:2016-10-30 01:59:06

标签: javascript jquery python html cors

我需要从HTML标记中获取一些数据,这些数据仅在您登录网站时显示。我需要在Python或Javascript中执行此操作。 Javascript将Cross-Origin-Browser-Policy(CORS)作为障碍。

我无法使用服务器端代码。 我不能使用iframe。

如果您在Chrome或FireFox中打开网页网址,数据随时可用,因为它可以让您保持登录状态,就像Facebook一样,因此我们将以此为例。我们会说我想从我的Facebook新闻源的第一个元素中获取数据。

我尝试抓取网页并使用Pythons urllib模块传递User Agent值。我尝试过使用Yahoos YQL工具和Javascript。两者都返回了我想要的HTML而没有我需要的值。这是因为它没有使用我的浏览器来执行它,它存储了填充我需要的值所需的cookie。

那么有没有办法刮掉已经打开的网页?假设我打开了Facebook,并运行了一些从浏览器获取新闻源数据的代码。

我还没有提到其他方法来实现这个目标吗?

背景:我正在为一个论坛(在网站规则中)创建一个自动提交器,并且需要从网站HTML中生成一些值,但是不会从所有者那里获得合作。

1 个答案:

答案 0 :(得分:0)

您可以使用python selenium webdriver尝试以下操作,因为它允许您登录并获取html源代码。

您必须先安装selenium并从selenium网站下载chromedriver.exe http://docs.seleniumhq.org/

这是我在gmail上使用的示例代码:

from selenium import webdriver

#you have to download the chromedriver from selenium hq homepage
chromedriver_path = r'your chromedriver.exe path here'
#create webdriver object and get url
driver = webdriver.Chrome(chromedriver_path)
driver.implicitly_wait(1)
driver.get('https://www.google.com/gmail')

#login
driver.find_element_by_css_selector('#Email').send_keys('email@gmail.com')
driver.find_element_by_css_selector('#next').click()
driver.find_element_by_css_selector('#Passwd').send_keys('1234')
driver.find_element_by_css_selector('#signIn').click()


#get html
html = driver.page_source