简单介绍一下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. linux 进程参数文件 /proc/pid/cmdline 简介
  2. QGLViewer编译过程
  3. oraclesqldeveloper 批量插入多个存储过程_MongoDB如何批量执行写操作
  4. 【Python】从0开始写爬虫——扒狗东先流产了
  5. linux 命令 cd -p,Linux_实例讲解Linux中cd命令切换目录的使用技巧,cd命令大家再熟悉不过了,bash sh - phpStudy...
  6. 利用福禄克DSX系列测试仪部署MPTL模块化插头端接链路
  7. 网页 php pdf文件怎么打开是乱码,打开php文件乱码的解决方法
  8. 程序员想知道代码是怎样跑起来的
  9. 大学计算机专业绩点3.7什么水平,大学绩点3.0什么水平 大学里的绩点有什么用...
  10. mx350显卡天梯图_2019.8月CPU和显卡性能天梯图
  11. python 游戏屏蔽了模拟键盘_单机游戏下载:专业模拟飞行11 专业飞行模拟11 v11.41r1|容量62GB|官方简体中文|支持键盘.鼠标...
  12. 【OpenCV学习】cvtColor
  13. 【VBA研究】调用API实现汉字简繁互换
  14. 数据库发展竟然和阿波罗登月有关?还有什么是我们不知道的?
  15. 罗杨美慧 20190912-1 每周例行报告
  16. 合伙开公司要如何规避风险
  17. Python:whl文件是神?如何安装whl文件?
  18. 微信小程序实现轮播图(超简单)
  19. Discovering Relations among Named Entities from Large Corpora
  20. M1 macOS 无法录制系统声音?SoundFlower后继有BlackHole【macOS系统声音内录】

热门文章

  1. 手机的备忘录里的字怎么换颜色
  2. 一个感染型木马病毒分析(一)
  3. 【NLP】第 1 章 :机器阅读理解简介
  4. 利比亚ECTN申请流程
  5. python统计词频瓦尔登湖_自然语言处理之中文分词器-jieba分词器详解及python实战...
  6. jQuery简单折线图插件
  7. MSDE使用说明文档
  8. zabbix监控服务器邮箱报警
  9. WCDMA的R99版本和R4版本(转)
  10. mysql数据库调优 面试_面试-MySQL篇:数据库调优