chromedriver 下载_爬虫3-下(利用Selenium + Chrome Driver模拟用户操作浏览器)

一、前言

前面利用request的方法爬取页面数据的操作,今天用另外一种方法:利用Selenium + Chrome Driver模拟用户操作浏览器,来爬取数据。

在此之前需要做一些准备工作:安装selenium库、下载谷歌浏览器、下载与谷歌浏览器版本相对应的Chrome Drive(参考chromedriver与chrome版本映射表),然后将下载好的Chrome Drive(chromedriver.exe)放入anaconda的scripts文件中。

  • Selenium的学习文章档 Selenium Documentation
  • Selenium的安装:pip install selenium

1. chromedriver与chrome版本映射表:https://blog.csdn.net/huilan_same/article/details/51896672

2. chromedriver下载地址:http://chromedriver.storage.googleapis.com/index.html

3. chromedriver.exe文件移动到此pythpn的anaconda文件夹下的scripts文件夹中,路径(C:ProgramDataAnaconda3Scripts)

对于第3步,如果忘记anaconda的安装位置了,可以使用下面语句查看python的安装路径

import os
os.environ

二、模拟浏览器操作

1、导入库

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

2、创建浏览器对象, 同时打开浏览器

browser = webdriver.Chrome() #如果打开这行浏览器就说明驱动成功了
browser.get('http://www.baidu.com')

689488f959e5aa21ab357e67f4ae9f5a.png
不要手动点击浏览器的任何操作
browser.find_element_by_link_text("新闻").click()

26b3c06cf1e8cf42dc49838a598427f9.png

8954c7101c9b79edb3cbcc32aee49d38.png
browser.find_element_by_class_name('a3').click()

ac226beea572c76df94d2e43c75a8f21.png
browser.back()
browser.forward()
kw = browser.find_element_by_id('kw')
kw.send_keys("显卡")
kw.send_keys(Keys.ENTER)
browser.find_element_by_link_text('显卡吧_百度贴吧').click()
# 窗口切换
# 获取当前所有打开窗口的句柄
browser.window_handles
# 切换窗口
browser.switch_to_window(browser.window_handles[1])
#滚动窗口
window.scrollTo(0, document.body.scrollHeight)

#关闭浏览器
browser.close()

977f2c0bbcdeabd33cff5c76d7d2d66c.png

3、获取单个节点的方法

4f5516650ae693ba8737f3c24c72510d.png

三、使用模拟浏览器爬取豆瓣电影短评数据

第1步:导入库,进入网页

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
import time
import pandas as pd
login_page_url = 'https://accounts.douban.com/passport/login?source=movie'
browser.get(login_page_url)

ff44fe0d959ab7c0510463b0e4030f3f.png

第2步:填入账号和密码,进行登入

browser.find_element_by_class_name('account-tab-account').click() #选择密码登入
username = browser.find_element_by_id('username') #输入账号
username.send_keys('17611313631')
password = browser.find_element_by_id('password')  #输入密码
password.send_keys("a123456789")
browser.find_element_by_class_name('btn-account').click() #点击登入

3086cbef389fa36ec19139510f3ad31e.png
密码登入

f96e462333178e2bca7de87628214268.png
遇到滑动滑块的,手动滑过去就可以

7ff8181024000427bcb7f5eb466ce04e.png
登入后

第3步:获取短评

empty = pd.DataFrame(columns=['短评'])
for page in range(25):
    url = 'https://movie.douban.com/subject/{}/comments?start={}&limit=20&sort=new_score&status=P'.format(3878007, page*20)
    browser.get(url)
    short = browser.find_elements_by_class_name('short')
    s = [i.text for i in short]
    data = pd.DataFrame(s,columns=['短评'] )
    empty = empty.append(data, ignore_index=True)
    time.sleep(1)

b810919eae22a3ec81644d808ff3df23.png

四、封装成函数

1、登入函数(try error)

def login_in_douban(账号, 密码):
    login_page_url = '登录豆瓣'
    try:
        browser.get(login_page_url)
        browser.find_element_by_class_name('account-tab-account').click()
        username = browser.find_element_by_id('username')
        username.send_keys(账号)
        password = browser.find_element_by_id('password')
        password.send_keys(密码)
        browser.find_element_by_class_name('btn-account').click()
    except Exception as e:
        print('登录错误:', e)

2、爬取网页函数

def crawl_the_page(movie_id, pages):
    empty = pd.DataFrame(columns=['短评'])
    for page in range(pages):
        url = 'https://movie.douban.com/subject/{}/comments?start={}&limit=20&sort=new_score&status=P'.format(movie_id, page*20)
        browser.get(url)
        short = browser.find_elements_by_class_name('short')
        s = [i.text for i in short]
        data = pd.DataFrame(s,columns=['短评'] )
        empty = empty.append(data, ignore_index=True)
        time.sleep(0.5)
    return empty

a13d4b50bfa6e4db7abdea12dc622c50.png

五、爬虫进阶

b539de35509377f0252149ffad590dde.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值