简单介绍一下Selenium,以下是官方文档的解释:

Selenium Python 绑定提供了一个简单的 API 来使用 Selenium WebDriver 编写功能/验收测试。通过 Selenium Python API,我们可以直观地访问 Selenium WebDriver 的所有功能。

简单来说,Selenium就是python下面的一个工具包,他能够通过API调用Selenium WebDriver的功能。

那么如何通过Selenium来爬取数据呢?

首先是要做好准备工作:

第一步,下载Selenium。可以直接在pycharm中下载,也可以从终端下载使用pip安装 selenium 包。

pip install selenium

第二步,下载驱动。Selenium 需要驱动程序来与所选浏览器交互。例如,Firefox 需要geckodriver,Google需要googleDriver,需要先安装它们。

一些更流行的浏览器驱动程序的链接如下:

Google:https://sites.google.com/chromium.org/driver/
MicrosoftEdge:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefox:https://github.com/mozilla/geckodriver/releases

下载好之后需要配置一下环境,将它放在/usr/bin或/usr/local/bin中。

否则会报错误 selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH。

第三步,开始爬取数据

案例代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import Bydef getData_name():driver = webdriver.Chrome(r'E:\pythonProject1\chromedriver.exe') #浏览器驱动driver.get('https://www.ccgp-chongqing.gov.cn/info-notice/procument-notice-detail/1111264751247470592?title=%E9%87%8D%E5%BA%86%E5%B7%A5%E7%A8%8B%E8%81%8C%E4%B8%9A%E6%8A%80%E6%9C%AF%E5%AD%A6%E9%99%A2%E6%97%A0%E4%BA%BA%E6%9C%BA%E5%A4%9A%E5%85%83%E6%95%B0%E6%8D%AE%E9%87%87%E9%9B%86%E4%B8%8E%E5%A4%84%E7%90%86%E7%B3%BB%E7%BB%9F%E8%AE%BE%E5%A4%87(CQS22A00383)%E4%B8%AD%E6%A0%87%EF%BC%88%E6%88%90%E4%BA%A4%EF%BC%89%E7%BB%93%E6%9E%9C%E5%85%AC%E5%91%8A') #网址driver.implicitly_wait(10) #停留十秒with open('D:/house.txt', 'a+') as f:#for i in range(1,7): #手动设置爬取6条数据try:# if i > 2 :each1 = driver.find_elements(By.XPATH,"//div/h4/span[@style='font-size:18px;margin-right:20px;']") #相应属性的xpath路径#  else:#     each1 = driver.find_elements(By.XPATH,"//*[@id='index']/div/div[1]/div[3]/div["+str(i)+"]/div/div[2]/p") #相应属性的xpath路径#  print(i)print(each1[0])f.write(each1[0].text + "\n")except:print("第{0}条数据处理失败".format(1))if __name__ == '__main__':getData_name()

我们需要在页面定位到需要爬取的元素的位置,然后进行爬取。

定位方式如下:

1、按照ID定位

<html><body><form id="loginForm"><input name="username" type="text" /><input name="password" type="password" /><input name="continue" type="submit" value="Login" /></form></body>
</html>

需要定位到表单元素,通过

login_form = driver.find_element(By.ID, 'loginForm')

2、按名称定位

<html><body><form id="loginForm"><input name="username" type="text" /><input name="password" type="password" /><input name="continue" type="submit" value="Login" /><input name="continue" type="button" value="Clear" /></form>
</body>
</html>

用户名和密码元素可以这样定位:

username = driver.find_element(By.NAME, 'username')
password = driver.find_element(By.NAME, 'password')

3、通过 XPath 定位

<html><body><form id="loginForm"><input name="username" type="text" /><input name="password" type="password" /><input name="continue" type="submit" value="Login" /><input name="continue" type="button" value="Clear" /></form>
</body>
</html>

表单元素可以这样定位:

login_form = driver.find_element(By.XPATH, "/html/body/form[1]")
或者
login_form = driver.find_element(By.XPATH, "//form[1]")
或者
login_form = driver.find_element(By.XPATH, "//form[@id='loginForm']")

用户名元素可以像这样定位:

username = driver.find_element(By.XPATH, "//form[input/@name='username']")
或者
username = driver.find_element(By.XPATH, "//form[@id='loginForm']/input[1]")
或者
username = driver.find_element(By.XPATH, "//input[@name='username']")

XPath的定位比较复杂多样,这里涵盖不全,若果感兴趣可以去

XPath Tutorial 学习

4、通过链接文本定位超链接

<html><body><p>Are you sure you want to do this?</p><a href="continue.html">Continue</a><a href="cancel.html">Cancel</a>
</body>
</html>

continue.html 链接可以这样定位:

continue_link = driver.find_element(By.LINK_TEXT, 'Continue')
continue_link = driver.find_element(By.PARTIAL_LINK_TEXT, 'Conti')

5、按标签名称定位元素

<html><body><h1>Welcome</h1><p>Site content goes here.</p>
</body>
</html>

标题 (p) 元素可以这样定位:

heading1 = driver.find_element(By.TAG_NAME, 'p')

使用Selenium来爬取网页内容相关推荐

  1. Python使用标准库urllib模拟浏览器爬取网页内容

    爬取网页内容的第一步是分析目标网站源代码结构,确定自己要爬取的内容在哪里,这要求对HTML代码有一定了解,对于某些网站内容的爬取还需要具有一定的Javascript基础.但是,如果目标网站设置了反爬机 ...

  2. 基于selenium+scrapy爬取复仇者联盟4豆瓣影评数据

    基于selenium+scrapy爬取复仇者联盟4豆瓣影评数据 参考资料: 黑马程序员爬虫教程 静觅爬虫教程 mac下anaconda安装selenium+PhantomJS scrapy下载中间件结 ...

  3. python爬取虎扑评论_python爬虫系列Selenium定向爬取虎扑篮球图片详解

    前言: 作为一名从小就看篮球的球迷,会经常逛虎扑篮球及湿乎乎等论坛,在论坛里面会存在很多精美图片,包括NBA球队.CBA明星.花边新闻.球鞋美女等等,如果一张张右键另存为的话真是手都点疼了.作为程序员 ...

  4. Crawler之Scrapy:数据挖掘必备的scrapy框架之最完整爬取网页内容攻略

    相关文章推荐 Scrapy:Python3版本上安装数据挖掘必备的scrapy框架详细攻略(二最完整爬取网页内容信息攻略) 目录 scrapy框架之最完整爬取网页内容攻略 scrapy框架之最完整爬取 ...

  5. java爬取网页内容 简单例子(2)——附jsoup的select用法详解

    [背景] 在上一篇博文 java爬取网页内容 简单例子(1)--使用正则表达式 里面,介绍了如何使用正则表达式去解析网页的内容,虽然该正则表达式比较通用,但繁琐,代码量多,现实中想要想出一条简单的正则 ...

  6. [python爬虫] BeautifulSoup和Selenium简单爬取知网信息测试

    作者最近在研究复杂网络和知识图谱内容,准备爬取知网论文相关信息进行分析,包括标题.摘要.出版社.年份.下载数和被引用数.作者信息等.但是在爬取知网论文时,遇到问题如下:   1.爬取内容总为空,其原因 ...

  7. [转载] python+selenium定时爬取丁香园的新冠病毒每天的数据,并制作出类似的地图(部署到云服务器)

    参考链接: Python vars() python+selenium定时爬取丁香园的新冠病毒每天的数据,并制作出类似的地图(部署到云服务器) 声明:仅供技术交流,请勿用于非法用途,如有其它非法用途造 ...

  8. 使用selenium自动爬取斗鱼直播平台的所有房间信息

    使用selenium自动爬取斗鱼直播平台的所有房间信息 文章目录 使用selenium自动爬取斗鱼直播平台的所有房间信息 使用selenium实现动态页面模拟点击 什么是selenium? selen ...

  9. selenium/requess爬取京东手机商品的详细信息1~selenium练习版

    selenium/requess爬取京东手机商品的详细信息1~selenium!! 前言 因为我也是个学生,所以代码可能会有点繁琐,我们都是超能100,一点点积累进步,其实有很多的地方可以简化,因为我 ...

最新文章

  1. Zephyr内核到1.5版本的改进
  2. 在Docker启动Cloudera并开始体验
  3. VS创建第一个程序hello(跨文件)
  4. Cocos Creator 使用 Android Studio 打包 APK 遇到的坑
  5. linux Rh界面,Ubuntu Linux与RH系列的不同之处
  6. Segment Routing MPLS介绍
  7. 计算机组成原理第5版第六章答案,计算机组成原理第六章答案.docx
  8. 正则表达式总结regex
  9. STM32f103系列各个型号芯片之间的程序移植
  10. 远程服务器638,638是什么意思
  11. linux系统支持网银吗,Linux系统能使用网银吗?
  12. 计算机里s大小,衣服上的S,M,L代表m或l多大
  13. getch方法_linux 下getch()函数实现
  14. 服务器如何接收GPS定位器发送过来的数据
  15. 340页11万字智慧政务大数据资源平台大数据底座数据治理建设方案
  16. 格力2代,原厂固件hola1.2.2
  17. mysql容器保存为镜像实战操作(拷贝方法)
  18. 【unity】性能优化之——视锥体剔除(Frustum Culling)(一)
  19. 实现同网段不同vlan通信有几种方式?纯二层网络下又是如何实现的?
  20. 一点点linux系统的学习心得

热门文章

  1. Restorator 2018 v3.90汉化注册版 含注册码汉化激活教程
  2. 未来光通信迈入多通道集成时代,泰克助力上海交大搭建下一代光通信研发平台
  3. 学flask并尝试写接口的过程
  4. com.chaychan.library.BottomBarLayout底部导航
  5. oppo云服务器网站,开启OPPO云服务 个人数据轻松管理
  6. html(css样式)
  7. Artisteer 和 框架——選擇哪一個?
  8. 发布iWO(联通3G详单及套餐使用情况查询工具) v0.1
  9. 神经网络拟合是什么意思,神经网络拟合二次曲线
  10. 【Liunx】manjaro双系统安装教程