python的爬虫(七)(适合新手)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43701019/article/details/100059200

——个人笔记

一系列:
python爬虫(一)
python爬虫(二)
python爬虫(三)
python爬虫(四)
python爬虫(五)
python爬虫(六)
python爬虫(八)
python爬虫(九)
python爬虫(十)
python爬虫(十一)


使用selenium准备工作

  • selenium可以控制浏览器,做出自动打开、输入、点击等操作,就像是有一个真正的用户在操作一样。
    首先我们要做一些准备工作,首先要用pip安装,pip install selenium # Windows电脑安装selenium如果你pip的太旧出错那么你升级一下python -m pip install --upgrade pip就ok了。这是第一步,然后,我建议大家用Chrome浏览器,我们还要下载Chrome浏览器驱动。版本对应可以百度,或者去到链接,里面随便点击一个进去看到有notes.txt(如图),点进去就有版本对应。不知道自己的版本可以去浏览器的设置查看(如图)。
    在这里插入图片描述
    在这里插入图片描述

  • 本地Chrome浏览器设置方法

    • 上面的准备工作搞定了,那么我们要来尝试用代码打开一个网页和关闭它。下面代码就会打开一个网页然后停留2秒之后关闭浏览器。

      import time
      # 本地Chrome浏览器设置方法
      from selenium import webdriver #从selenium库中调用webdriver模块
      driver = webdriver.Chrome('这里是chromedriver.exe的路径') # 设置引擎为Chrome,真实地打开一个Chrome浏览器
      
      driver.get('要打开的网页的网址如:https://www.baidu.com/') # 打开网页
      time.sleep(2)#时间等待,用来缓冲打开网页的时间。
      driver.close() # 关闭浏览器
      

Selenium提取数据的方法:

  • 提取所有元素的方法,把下面方法中的element换成复数elements就好了。这个可以自己尝试一下,有点像之前的BeautifulSoup。不过我们获取到的信息的类型是WebElement,提取文本就是.text,提取一个属性的值用.get_attribute比如:

    label = driver.find_element_by_tag_name('label') # 解析网页并提取第一个<lable>标签
    print(label.text) # 打印label的文本
    print(label.get_attribute('type')) # 打印type这个属性的值
    

    在这里插入图片描述

  • 过程图示:
    在这里插入图片描述

    另外我们也可以用Selenium提取数据之后,用BeautifulSoup来操作,因为我们用page_source获取WebElement对象的整个页面源码的text文本(可以参考之前的文章,driver.page_suorce相当于之前的requests提取之后的.text)。


我们用Selenium是要像人一样操作,那么上面只是学习了怎么登录网站获取信息而已。那如果要有输入文本和点击按钮怎么办,其实很简单,只需要知道.send_keys() # 模拟按键输入,自动填写表单.click() # 点击元素这两个方法就行,登录网站之后,我们在源码找到我们要输入的文本框或者按钮所对应的源码,然后通过上面的获取信息方法,获取到这些元素那么我们就可以用这两个方式来进行输入文本和点击按钮。比如:

teacher = driver.find_element_by_id('teacher') # 找到【请输入你喜欢的老师】下面的输入框位置
teacher.send_keys('都喜欢啊') # 输入文字
button = driver.find_element_by_class_name('sub') # 找到【提交】按钮
button.click() # 点击【提交】按钮

不过还有一个方法.clear(),用于清除元素的内容。

猜你喜欢

转载自blog.csdn.net/weixin_43701019/article/details/100059200