美文网首页
爬虫---handless Chrome和selenium+ph

爬虫---handless Chrome和selenium+ph

作者: riverstation | 来源:发表于2018-07-17 17:38 被阅读146次

    1、selenium+phantomjs

    selenium是什麽?

    是一个浏览器自动化测试工具,自动化就是通过代码操作浏览器,让浏览器自动的做一些操作,是python的第三方库,需要安装才能使用

    pip install selenium

    谷歌驱动下载地址

    http://chromedriver.storage.googleapis.com/index.html

    驱动和浏览器版本关系映射表

    http://blog.csdn.net/huilan_same/article/details/51896672

    selenium 操作谷歌浏览器

    需要有一个谷歌浏览器的驱动,然后操作这个驱动

    from selenium import webdriver
    import time
    
    # 根据webdriver里面的类去创建一个谷歌浏览器对象
    path = r'C:\Users\ZBLi\Desktop\1805\day06\ziliao\chromedriver.exe'
    browser = webdriver.Chrome(path)
    
    # 再往下,操作浏览器就是操作对象
    # 打开百度
    url = 'http://www.baidu.com/'
    browser.get(url)
    time.sleep(2)
    
    # 查找百度输入框
    my_input = browser.find_element_by_id('kw')
    # 写内容
    my_input.send_keys('清纯美女')
    time.sleep(2)
    
    # 查找按钮框
    button = browser.find_element_by_id('su')
    button.click()
    
    time.sleep(3)
    
    # 查找阳光美女链接
    href = browser.find_elements_by_xpath('//div[@class="op-img-covers-divide-high"][2]/a[2]')[0]
    href.click()
    time.sleep(3)
    
    # 推出浏览器
    browser.quit()
    

    find_element_by_id 根据id找固定的节点
    find_elements_by_name 根据name找节点
    find_elements_by_xpath 根据xpath查找
    find_elements_by_tag_name 根据标签名查找
    find_elements_by_class_name 根据类名查找
    find_elements_by_css_selector 根据选择器查找
    find_elements_by_link_text 根据链接内容查找

    作用在哪?

    让selenium操作的是phantomjs

    phantomjs是什麽?

    就是一款浏览器,无界面的浏览器,具有浏览器的功能,html\css\js这些文件浏览器可以直接执行。
    我们关注的就是phantomjs可以执行js文件的功能,在爬取网站的时候,经常碰见动态加载数据的过程。js DOM,解决方法两种

    (1)抓接口,拿出来接口发送请求,解析即可
    (2)让浏览器直接执行js,然后我要执行js之后的网页代码,selenium+phantomjs,终极解决方案,大招,缺点:发请求之后要有停顿

    操作phantomjs

    from selenium import webdriver
    import time
    
    path = r'C:\Users\ZBLi\Desktop\1805\day06\ziliao\phantomjs-2.1.1-windows\bin\phantomjs.exe'
    browser = webdriver.PhantomJS(path)
    
    browser.get('http://www.baidu.com/')
    time.sleep(3)
    
    # 拍照片,记录走到哪了
    browser.save_screenshot(r'tupian\baidu1.png')
    
    browser.find_element_by_id('kw').send_keys('美女')
    time.sleep(2)
    browser.find_element_by_id('su').click()
    time.sleep(3)
    
    browser.save_screenshot(r'tupian\baidu2.png')
    
    browser.quit()
    

    代码中模拟滚动条滚动到底部

    js = 'document.body.scrollTop=10000'
    browser.execute_script(js)

    from selenium import webdriver
    import time
    
    path = r'C:\Users\ZBLi\Desktop\1805\day06\ziliao\phantomjs-2.1.1-windows\bin\phantomjs.exe'
    browser = webdriver.PhantomJS(path)
    
    url = 'https://movie.douban.com/typerank?type_name=%E5%8A%A8%E4%BD%9C&type=5&interval_id=100:90&action='
    browser.get(url)
    time.sleep(3)
    browser.save_screenshot(r'tupian\douban1.png')
    
    # 执行一句js代码即可
    # for x in range(1, 6):
    #   js = 'document.body.scrollTop=10000'
    #   browser.execute_script(js)
    #   time.sleep(3)
    #   browser.save_screenshot(r'tupian\douban2.png')
    
    js = 'document.body.scrollTop=10000'
    browser.execute_script(js)
    time.sleep(3)
    
    # 获取执行js之后的网页代码
    with open(r'tupian\douban.html', 'w', encoding='utf8') as fp:
        fp.write(browser.page_source)
    
    # 往下就可以通过bs或者xpath来解析网页内容了
    
    # 模拟点击加载更多,就是通过browser找到那个按钮,让按钮执行click方法即可
    
    browser.quit()
    

    获取页面的执行js之后的代码

        browser.page_source
    

    2、Headless Chrome

    是什麽?
    无头的谷歌浏览器-无界面的谷歌浏览器,phantomjs现在已经没人维护了,

    要求:windows(60+以上)、linux(59+以上)

    from selenium.webdriver.chrome.options import Options
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
    
    from selenium import webdriver
    
    import time
    
    from selenium.webdriver.chrome.options import Options
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
    
    path = r'C:\Users\ZBLi\Desktop\1805\day06\ziliao\chromedriver.exe'
    browser = webdriver.Chrome(executable_path=path, chrome_options=chrome_options)
    
    browser.get('http://www.baidu.com/')
    time.sleep(2)
    
    browser.save_screenshot(r'tupian\baidu3.png')
    
    browser.quit()
    
    • 当然:不仅谷歌有无界面模式,火狐也有,ie也有,phantomjs

    相关文章

      网友评论

          本文标题:爬虫---handless Chrome和selenium+ph

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