美文网首页
Python_scrapy—selenium模拟浏览器进行简单操

Python_scrapy—selenium模拟浏览器进行简单操

作者: Just_do_1995 | 来源:发表于2019-01-19 10:56 被阅读0次

    使用selenium进行浏览器模拟登录

    • 使用pip工具安装selenium
    pip install selenium
    

    使用selenium模拟打开浏览器进入淘宝获取商品价格

    • 创建一个新的爬虫文件
    • 下载浏览器driver文件
    Chrome:     https://sites.google.com/a/chromium.org/chromedriver/downloads
    Edge:       https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
    Firefox:    https://github.com/mozilla/geckodriver/releases
    Safari:     https://webkit.org/blog/6900/webdriver-support-in-safari-10/
    
    • 编写代码
    from selenium import webdriver
    from scrapy.selector import Selector
    
    browser = webdriver.Chrome(executable_path="E:/Python/spider_tools/chromedriver_win32/chromedriver.exe") ##该地址为浏览器driver的存储路径
    browser.get("https://detail.tmall.com/item.htm?spm=a220m.1000858.1000725.7.65ad796RvVIw8&id=557489349781&skuId=3457692281149&user_id=287745076&cat_id=56588002&is_b=1&rn=7292c4f7b15185093651d0c49ae3e584")
    
    print(browser.page_source)
    
    t_selector=Selector(text=browser.page_source)
    print(t_selector.css(".tm-promo-price .tm-price::text").extract())
    browser.quit()##退出模拟浏览器
    

    使用selenium模拟浏览器登录知乎

    • 模拟点击讲登录方式改为账号密码登录
    browser.find_element_by_css_selector(".qrcode-signin-container span.signin-switch-password").click()
    
    • 在账号密码输入框中自动填入账号密码并点击登录
    browser.find_element_by_css_selector(".view-signin input[name='account']").send_keys("账号")
    browser.find_element_by_css_selector(".view-signin input[name='password']").send_keys("密码")
    browser.find_element_by_css_selector(".view-signin button.sign-button").click()
    
    • 完整代码如下:
    from selenium import webdriver
    
    browser = webdriver.Chrome(executable_path="E:/Python/spider_tools/chromedriver_win32/chromedriver.exe")
    browser.get("https://www.zhihu.com/#signin")
    
    browser.find_element_by_css_selector(".qrcode-signin-container span.signin-switch-password").click()
    browser.find_element_by_css_selector(".view-signin input[name='account']").send_keys("账号")
    browser.find_element_by_css_selector(".view-signin input[name='password']").send_keys("密码")
    
    browser.find_element_by_css_selector(".view-signin button.sign-button").click()
    

    模拟登录微博

    • 登录方式同知乎一样。
      同样是定位到账号和密码的标签当中,将自己的账号密码填入。 然后模拟点击登录
    • 添加延迟语句。
      防止页面未加载完成时寻找标签出错。
    import time
    time.sleep(15)
    
    • 完整代码:
    from selenium import webdriver
    
    browser.get("https://weibo.com/")
    import time
    time.sleep(15)
    browser.find_element_by_css_selector("#loginname").send_keys("账号")
    browser.find_element_by_css_selector(".info_list.password input[node-type='password']").send_keys("密码")
    browser.find_element_by_css_selector("info_list.login_btn a[node-type='submitBtn']").click()
    

    使用selenium模拟鼠标滚动

    • 使用javascript模拟鼠标控制页面滚动到底部

    • 完整代码

    from selenium import webdriver
    
    browser.get("http://www.oschina.net/blog")
    import time
    time.sleep(5)
    
    for i in range(3):#循环三次
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight); var lenOfPage=document.body.scrollHeight; return lenOfPage;")
        time.sleep(3)#每次停顿3秒
    

    设置chrome不加载图片

    • 设置不加载图片是为了减少浏览器的请求,提高效率。
    • 完整代码
    from selenium import webdriver
    
     chrome_opt = webdriver.ChromeOptions()
    prefs = {"profile.managed_default_content_settings.images":2}
    chrome_opt.add_experimental_option("prefs", prefs)
    browser = webdriver.Chrome(executable_path="E:/Python/spider_tools/chromedriver_win32/chromedriver.exe",chrome_options=chrome_opt)
    browser.get("https://www.taobao.com")
    

    phantomjs --无界面浏览器

    • 优点:轻量级,效率高。
    • 缺点:在多进程情况下pantomjs性能会下降很严重。
    • 使用方法:
      和其他浏览器的使用方法相同,下载driver,使用时导入其存储路径即可。
    • 下载phantomjs driver
    http://phantomjs.org/download.html
    
    • 完整代码
    from selenium import webdriver
    
    browser = webdriver.PhantomJS("E:/Python/spider_tools/phantomjs-2.1.1-windows/bin/phantomjs.exe")
    browser.get("https://item.taobao.com/item.htm?id=539806403522&ali_refid=a3_430329_1006:1121343672:N:%E6%BD%AE%E6%B5%81%E6%97%B6%E5%B0%9A%E6%89%8B%E8%A1%A8:68ff99fcbd71d7908f312a27127a7bf9&ali_trackid=1_68ff99fcbd71d7908f312a27127a7bf9&spm=a217x.7279425.1997511617.409&scm=1029.minilist-17.1.50005700#detail")
    print(browser.page_source)
    browser.quit()
    

    相关文章

      网友评论

          本文标题:Python_scrapy—selenium模拟浏览器进行简单操

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