如何抓取 Angular JS 网络应用程序?
How to crawl an Angular JS web app?
我正在尝试抓取一个将登录作为第一个障碍并构建在 angular js 上的网络应用程序。我正在使用 scrapy 和 selenium 来抓取网站,但登录时出现问题。我有这个 post 我在其中寻求帮助 但我没有得到任何帮助。问题是当我使用 selenium(如下所示)读取 body 元素的 innerHTML 时,它给了我空白响应。为什么会这样?是因为 HTTPS 还是因为任何其他权限问题?
此外,如果有人可以帮助我了解如何使用 scrapy 和 selenium 以及登录名和 cookie 来抓取网站。这真的很有帮助。
def crawl_url(url, run_headless=True):
if run_headless:
display = Display(visible=0, size=(1024, 768))
display.start()
url = correct_url(url)
browser = webdriver.PhantomJS(service_args=['--load-images=no'])
login_url = "https://domain.com/login"
browser.get(login_url)
time.sleep(15)
element = browser.find_element_by_xpath('/html/body')
print element.get_attribute('innerHTML')
已知 PhantomJS 在 Angular 方面存在问题,建议您改用 Chrome。您可以从 https://devblog.supportbee.com/2014/10/27/setting-up-cucumber-to-run-with-Chrome-on-Linux/ 安装 chromedriver 并替换
browser = webdriver.PhantomJS(service_args=['--load-images=no'])
和
browser = webdriver.Chrome()
然后这应该可以工作。您也可以使用名为 Protractor 的框架,该框架专门用于测试 Angular 页面,它知道如何 运行 和解析 JavaScript 以获取 html。它有一个基于 selenium 的 webdriverjs 包装器。
我正在尝试抓取一个将登录作为第一个障碍并构建在 angular js 上的网络应用程序。我正在使用 scrapy 和 selenium 来抓取网站,但登录时出现问题。我有这个 post 我在其中寻求帮助 但我没有得到任何帮助。问题是当我使用 selenium(如下所示)读取 body 元素的 innerHTML 时,它给了我空白响应。为什么会这样?是因为 HTTPS 还是因为任何其他权限问题?
此外,如果有人可以帮助我了解如何使用 scrapy 和 selenium 以及登录名和 cookie 来抓取网站。这真的很有帮助。
def crawl_url(url, run_headless=True):
if run_headless:
display = Display(visible=0, size=(1024, 768))
display.start()
url = correct_url(url)
browser = webdriver.PhantomJS(service_args=['--load-images=no'])
login_url = "https://domain.com/login"
browser.get(login_url)
time.sleep(15)
element = browser.find_element_by_xpath('/html/body')
print element.get_attribute('innerHTML')
已知 PhantomJS 在 Angular 方面存在问题,建议您改用 Chrome。您可以从 https://devblog.supportbee.com/2014/10/27/setting-up-cucumber-to-run-with-Chrome-on-Linux/ 安装 chromedriver 并替换
browser = webdriver.PhantomJS(service_args=['--load-images=no'])
和
browser = webdriver.Chrome()
然后这应该可以工作。您也可以使用名为 Protractor 的框架,该框架专门用于测试 Angular 页面,它知道如何 运行 和解析 JavaScript 以获取 html。它有一个基于 selenium 的 webdriverjs 包装器。