如何抓取页面HTML并按照Selenium

时间:2016-10-18 02:17:39

标签: python selenium

我试图抓一个网站进行研究,而且我被困了。我希望刮刀读取页面源,并将其附加到本地HTML文件,以便我可以分析校外数据。我已尝试使用BeautifulSoupScrapy,但我发现我需要使用Selenium与该网页进行互动,以浏览我所在大学的身份验证系统。 (我不包括该代码,因为它与我的问题相关。)

当我运行脚本时,它会导航到该页面并单击该链接,但它只会保存第一页的HTML。然后,每次点击链接时,它都会复制并附加该页面的HTML。

如何使用Selenium点击下一页链接,抓取HTML并保存到文件,直到我到达最后一页?

source = driver.page_source

while True:
    with open("test.html", "a") as TestFile:
        TestFile.write(source)
        try:
            driver.implicitly_wait(200)
            driver.find_element_by_css_selector('li.next').click()
        except AttributeError:
            break

编辑:我将AttributeError添加到except并收到以下错误。

  

selenium.common.exceptions.StaleElementReferenceException:消息:   陈旧元素引用:元素未附加到页面文档

我的假设是我需要放慢.click()的速度,这就是为什么我最初有隐含的等待,但这似乎并没有成功。

1 个答案:

答案 0 :(得分:0)

您需要在while循环中将function nl2br(str, is_xhtml) { var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>'; return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2'); } $(document).ready(function(){ $.post("/text.php",function(result){ result=nl2br(result); $("body").append(result);}); }); 分配给page source变量。

source