zoukankan      html  css  js  c++  java
  • python 利用selenium爬取百度文库的word文章

    今天学习如何使用selenium库来爬取百度文库里面的收费的word文档

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from pyquery import PyQuery as pq
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium import webdriver
    import time
    options = webdriver.ChromeOptions()
    options.add_argument('user-agent="Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19"')
    driver = webdriver.Chrome('D:/chromedriver.exe',options=options)
    url="https://wenku.baidu.com/view/aa31a84bcf84b9d528ea7a2c.html"
    driver.get(url)
    html=driver.page_source
    page=driver.find_elements_by_xpath("/html/body/div[2]/div[2]/div[6]/div[2]/div[2]/div[1]/div/div[1]")#使用page标记记录百度文库中向下翻页的位置
    driver.execute_script('arguments[0].scrollIntoView();', page)

    结果运行报错:

    因为在百度文库页面底部需要点击“继续阅读”才可以加载到完整的页面,所以必须使用这两行代码

    page=driver.find_elements_by_xpath("/html/body/div[2]/div[2]/div[6]/div[2]/div[2]/div[1]/div/div[1]")#使用page标记记录百度文库中向下翻页的位置
    driver.execute_script('arguments[0].scrollIntoView();', page)

    来将浏览器滚动到“继续阅读”这个位置,然后执行点击按钮。

    但是却爆出了黄色部分的错误。找了好久,最后在stackoverflow上找到了答案,不得不说,stackoverflow还是强啊

    这哥们说,

    scrollIntoView()

    这个函数是属于DOM API ,因此你应该使用一个web元素来调用它,而不是一个web元素列表来使用它。

    这是我认识到,我可能定位的元素并不是一个,所以我又重新定位了一下元素,更改的代码如下:

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    
    driver = webdriver.Chrome('D:/chromedriver.exe')
    driver.get("https://wenku.baidu.com/view/aa31a84bcf84b9d528ea7a2c.html")
    page = driver.find_element_by_xpath("//*[@id='html-reader-go-more']/div[2]/div[1]/span/span[2]")
    driver.execute_script('arguments[0].scrollIntoView();', page) #拖动到可见的元素去
    driver.find_element_by_xpath("//*[@id='html-reader-go-more']/div[2]/div[1]/p").click()

    然后就可以自动的加载所有文档内容啦

  • 相关阅读:
    搭建NLP相关的python环境
    win10 系统更新后系统第三方软件无法切换微软拼音输入中文
    NLP文本清理时常用的python小函数
    python 复制
    #论文阅读# Universial language model fine-tuning for text classification
    conda 里的 jupyter
    #论文阅读#attention is all you need
    关于多类别分类任务
    大白话AOP
    搭建JavaEE项目是遇到的几个问题
  • 原文地址:https://www.cnblogs.com/gaoshiguo/p/11614266.html
Copyright © 2011-2022 走看看