美文网首页
爬虫(五)chrome动态内容(知乎(需登录))

爬虫(五)chrome动态内容(知乎(需登录))

作者: 马梦里 | 来源:发表于2018-01-14 10:24 被阅读0次

    chrome的 profile 文件在:chrome://version 的 Profile Path 里面

    // cookie 模式登录,需提前手动登录

    import config
    import platform
    import os
    from splinter import Browser
    
    def add_chrome_webdriver():
        print(platform.system())
        working_path = os.getcwd()
        library = 'library'
        path = os.path.join(working_path, library)
        os.environ['PATH'] += '{}{}{}'.format(os.pathsep, path, os.pathsep)
        print(os.environ['PATH'])
    
    def add_cookie(browser):
        for part in config.cookie.split('; '):
            kv = part.split('=')
            d = {kv[0]: kv[1]}
            browser.cookies.add(d)
        print(browser.cookies.all())
    
    def scroll_to_end(browser):
        browser.execute_script('window.scrollTo(0, document.body.scrollHeight);')
    
    def start_crawler():
        # 垃圾 chrome 有 bug https://bugs.chromium.org/p/chromium/issues/detail?id=617931
        # 不能 --user-data-dir 和 --headless 一起用
        # 改回用 cookie
    
        with Browser(‘chrome’, headless = True) as browser:
            url = "https://www.zhihu.com"
            # 先访问一个 url,才能设置这个 url 对应的 cookie
            browser.visit(url)
            add_cookie(browser)
            # 设置好 cookie 后,刷新页面即可进入登录状态
            browser.reload()
    
            print(browser.html)
            scroll_to_end(browser)
            found = False
    
            while not found:
                print('loop')
                found = browser.is_text_present('1 天前')
                if found:
                    print('拿到了最近1天动态')
                    break
                else:
                    scroll_to_end(browser)
    
    def main():
        add_chrome_webdriver()
        start_crawler()
    
    
    if __name__ == '__main__':
        main()
    

    config.py
    cookie = [ ]

    图片.png

    // 配置文件模式

    1. 在 config.py 文件设置变量,赋值 profile 的路径
    2. 加入:
    option = webdriver.ChromeOptions()
    argument = '--user-data-dir={}'.format(config.profile)
    option.add_argument(argument)
    
    with open Brpwser('chrome', options=option) as browser:
    
    1. 有个 bug

    相关文章

      网友评论

          本文标题:爬虫(五)chrome动态内容(知乎(需登录))

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