美文网首页
爬取百度文库的付费文档

爬取百度文库的付费文档

作者: kevinfaith | 来源:发表于2018-09-23 16:01 被阅读589次
    不要着急花更多的时间去赚钱,去花时间,让自己的时间更值钱。薪资只是你个人能力的附属品
    

    简介:

    因为我们学校有社会实践这种东西,需要写一个社会实践心得,但是呢,我在家研究了一个半月的python,emmmm 你让我拿什么写社会实践心得- -,于是只好百度找一篇咳咳借鉴一下,对,就是借鉴一下。然后找到一篇百度文库的文档,复制一下,恩??没用。下载,恩??还要钱。wtf,你还是人嘛(脸就是那么厚),充钱是不可能充钱的,这辈子都不可能充钱的,学了一个半月的python爬虫,这时候不就派上用场了,人生苦短,我用python

    准备:

    用到的模块:
    • BeautifulSoup
    • selenium
    • os
    安装:

    BeautifulSoup的安装方式我在之前一篇博客里面讲过了,需要的可以去看看。
    selenium的安装:

    pip install selenium
    

    然后还需要一个浏览器的驱动程序,如果你用的Chrome,就去下载Chrome的驱动
    如果是firefox,就去firefox下载,
    然后解压到/usr/bin 或者 /usr/local/bin里面,就可以了,windows用户就请自行百度了,哈哈。
    但是这种方式有个弊端,因为是打开浏览器的缘故,响应速度较慢。解决方式是用Headless Chrome/firefox,无头浏览器。
    无头浏览器的意思是没有用户界面的浏览器。正因为没有图形界面的缘故,会比前面的那些浏览器运行速度快很多,
    我这里用的就是无头浏览器(Headless Chrome)
    安装方式:
    headless chrome
    如果想使用Headless Chrome 对Chrome版本有一定的要求,从官方文档我们可以看出,mac和linux环境要求chrome版本是59+,而windows版本的chrome要求是60+,同时不同版本的chrome的版本要求的ChromeDriver版本也是不一样的,具体的安装方式和使用方式看官方文档吧。
    如果你想用headless Firefox,也类似,具体的安装使用去看官方文档

    分析思路

    因为百度文库经过了很多js的渲染,所以果断选择使用selenium,selenium是什么呢,按照百度的说法,selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样,selenium用于爬虫,主要是用来解决javascript渲染的问题,简单来说就是模拟实际用户操作了。然后我们get一个目标网站,调用selenium的page_source方法,获取js渲染以后的源码,使用BeautifulSoup提取我们要的文档。

    代码实现

        from selenium import webdriver
        from selenium.webdriver.chrome.options import Options
        import os
        from bs4 import BeautifulSoup
    
        chrome_options = webdriver.ChromeOptions()
        chrome_options.add_argument('--headless')
        #headless,官方解释是Runs Chrome in headless mode,反正是个必要的参数
        chrome_options.add_argument('user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 10_2_1 like Mac OS X) AppleWebKit/602.4.6 (KHTML, like Gecko) Version/10.0 Mobile/14D27 Safari/602.1"')
        #我把user-agent改成手机版的了
    
        chromedriver = "/usr/bin/chromedriver"
        os.environ["webdriver.chrome.driver"] = chromedriver
        #调用本地的环境
        driver = webdriver.Chrome(chrome_options=chrome_options,executable_path=chromedriver)
        driver.get("https://wenku.baidu.com/view/8e85d6eac1c708a1294a4425.html")
    
    
    
        html = driver.page_source
        #获取源码
        bf1 = BeautifulSoup(html,'lxml')
        #使用BeautifulSoup分析源码
    
        #获取文章
        text_list = []
        list_div = bf1.find_all('div', class_= 'content singlePage wk-container')
        for list_p in list_div:
            text = list_p.get_text()
            text_list.append(text)
        a = ''.join(text_list).replace('\xa0', '')
        with open('./wenku.txt', 'w') as f:
            f.write(a)
    

    相关文章

      网友评论

          本文标题:爬取百度文库的付费文档

          本文链接:https://www.haomeiwen.com/subject/jnwnnftx.html