我正在尝试抓取一个网络应用程序,该网站应用程序已登录为第一个障碍并且构建在角度js上。我正在使用scrapy和selenium来抓取网站,但是登录时出现问题。我有这篇帖子,我在那里寻求帮助https://stackoverflow.com/questions/30926880/what-is-the-best-way-for-crawling-with-scrapy-and-selenium-angularjs-website,但我没有得到任何帮助。问题是,当我使用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')
答案 0 :(得分:1)
众所周知,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包装器。