selenium简介

Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。

github地址:https://github.com/SeleniumHQ/selenium

为什么selenium可以用在爬虫领域?

一般的写爬虫的方法是用python脚本直接对目标网站进行访问,而且只对目标数据进行采集,访问速度很快,这样目标网站很容易就识别出你是机器人,然后把你封锁了~~而使用selenium写爬虫,python脚本操控浏览器进行访问,也就是说python脚本和目标网站之间多了个浏览器的操作,这样的行为更像是人类行为。这样很多难爬的网站也可以轻而易举的抓数据了。

使用selenium前的准备

  • 如果你没有安装selenium,请先使用conda install selenium或pip install selenium.
  • 下载好你的firefox浏览器(这里推荐firefox,当然chrome也行)
  • 安装geckodriver 。geckodrive下载地址:https://github.com/mozilla/geckodriver/releases

    将下载的geckodriver.exe 放到path路径下 D:/Python/Python35-32/(就是放到你的python安装路径下,我这里是假设你已经安装好了python并且Python安装路径已经被添加到了path环境变量下)

    如果你没有安装geckodriver.exe应该会出现如下的错误:

    WebDriverException: ‘geckodriver’ executable needs to be in PATH.

selenium基本知识

  • 自动打开某个网址
from selenium import webdriver
from bs4 import BeautifulSoup
初始化浏览器
driver = webdriver.Firefox()
打开某个网址
driver.get(url)
  • 输入登录账号密码(如果需要登录的话)
#这里是根据xpath输入账号和密码的
driver.find_element_by_xpath(xpath).clear()
driver.find_element_by_xpath(xpath).send_keys("你的账号")
driver.find_element_by_xpath(xpath).clear()
driver.find_element_by_xpath(xpath).send_keys("你的密码") #定位“点击登录”框的位置的xpath,通过click()执行登录
driver.find_element_by_xpath(xpath).click()
  • 访问你想爬的网页
#获取该网页的源码
driver.get(url)
html = driver.page_source
bs4 = BeautifulSoup(html,'lxml')

selenium使用

  • 打开百度首页
## 引入WebDriver的包
from selenium import webdriver
## 创建浏览器对象
browser = webdriver.Firefox()
## 打开百度网站
browser.get('https://www.baidu.com/')
 效果:自动打开浏览器,然后打开百度首页
  • 模拟登录csdn
from selenium import webdriver
## 创建浏览器对象
browser = webdriver.Firefox()
## 打开小米社区网站
browser.get('https://passport.csdn.net/account/login')
browser.find_element_by_xpath("//*[@id='username']").clear()#清空输入框
browser.find_element_by_xpath("//*[@id='username']").send_keys("你的账号")#输入账号
browser.find_element_by_xpath("//*[@id='password']").clear()#清空输入框
browser.find_element_by_xpath("//*[@id='password']").send_keys("你的密码")#输入密码
browser.find_element_by_xpath("/html/body/div[4]/div/div/div[2]/div/div[1]/div/form/input[8]").click()#登录
 效果:自动打开浏览器,然后打开csdn登录首页,自动输入用户名和密码实现登录。
  • 模拟登录小米社区并抓取帖子标题
## 引入WebDriver的包
from selenium import webdriver
from bs4 import BeautifulSoup
## 创建浏览器对象
browser = webdriver.Firefox()
## 打开小米社区网站
browser.get('https://account.xiaomi.com/pass/serviceLogin?callback=http%3A%2F%2Fbbs.xiaomi.cn%2Flogin%2Fcallback%3Ffollowup%3Dhttp%253A%252F%252Fbbs.xiaomi.cn%252F%26sign%3DM2E4MTg3MzE3MGJmZGFiMTc0MTE5NmNjZTAyYWNmMDZhNTEwOTU2NQ%2C%2C&sid=new_bbs_xiaomi_cn&_locale=zh_CN')
browser.find_element_by_xpath("//*[@id='username']").clear()#清空输入框
browser.find_element_by_xpath("//*[@id='username']").send_keys("你的账号")#输入账号
browser.find_element_by_xpath("//*[@id='pwd']").clear()#清空输入框
browser.find_element_by_xpath("//*[@id='pwd']").send_keys("你的密码")#输入密码
browser.find_element_by_xpath("//*[@id='login-button']").click()#登录
base_url="http://bbs.xiaomi.cn/d-{page}"
#我这里是抓取了前5页,当然你可以抓取的更多
for i in range(1,6):
url=base_url.format(page=i)
browser.get(url)
bs4=BeautifulSoup(browser.page_source,'lxml')
titles=bs4.find_all('div', {'class':'title'})
for title in titles:
title_content=title.get_text().strip('\n')
print(title_content)
效果:

遇到的一些问题

  1. 如何获取xpath?

    这里说一个最简单的方法:

    打开firefox浏览器,进入相应页面,右键某个网页元素点击查看元素,然后复制xpath.如下图所示:



  2. WebDriverException: ‘geckodriver’ executable needs to be in PATH.

    这个上面也提到过。

    geckodrive下载地址:https://github.com/mozilla/geckodriver/releases

    将下载的geckodriver.exe 放到path路径下 D:/Python/Python35-32/(就是放到你的python安装路径下,我这里是假设你已经安装好了python并且Python安装路径已经被添加到了path环境变量下)

    github项目地址(系列文章包含常见第三库的使用与爬虫,会持续更新)

selenium在爬虫领域的初涉(自动打开网站爬取信息)的更多相关文章

  1. Python爬虫入门教程 2-100 妹子图网站爬取

    妹子图网站爬取---前言 从今天开始就要撸起袖子,直接写Python爬虫了,学习语言最好的办法就是有目的的进行,所以,接下来我将用10+篇的博客,写爬图片这一件事情.希望可以做好. 为了写好爬虫,我们 ...

  2. selenium在爬虫中的应用之动态数据爬取

    一.selenium概念 selenium 是一个基于浏览器自动化的模块 selenium爬虫之间的关联: 1.便捷的获取动态加载的数据 2.实现模拟登录 基本使用 pip install selen ...

  3. 爬虫系列(十一) 用requests和xpath爬取豆瓣电影评论

    这篇文章,我们继续利用 requests 和 xpath 爬取豆瓣电影的短评,下面还是先贴上效果图: 1.网页分析 (1)翻页 我们还是使用 Chrome 浏览器打开豆瓣电影中某一部电影的评论进行分析 ...

  4. 爬虫系列(六) 用urllib和re爬取百度贴吧

    这篇文章我们将使用 urllib 和 re 模块爬取百度贴吧,并使用三种文件格式存储数据,下面先贴上最终的效果图 1.网页分析 (1)准备工作 首先我们使用 Chrome 浏览器打开 百度贴吧,在输入 ...

  5. 爬虫系列(十) 用requests和xpath爬取豆瓣电影

    这篇文章我们将使用 requests 和 xpath 爬取豆瓣电影 Top250,下面先贴上最终的效果图: 1.网页分析 (1)分析 URL 规律 我们首先使用 Chrome 浏览器打开 豆瓣电影 T ...

  6. 爬虫入门(三)——动态网页爬取:爬取pexel上的图片

    Pexel上有大量精美的图片,没事总想看看有什么好看的自己保存到电脑里可能会很有用 但是一个一个保存当然太麻烦了 所以不如我们写个爬虫吧(๑•̀ㅂ•́)و✧ 一开始学习爬虫的时候希望爬取pexel上的 ...

  7. 爬虫概念与编程学习之如何爬取视频网站页面(用HttpClient)(二)

    先看,前一期博客,理清好思路. 爬虫概念与编程学习之如何爬取网页源代码(一) 不多说,直接上代码. 编写代码 运行 <!DOCTYPE html><html><head& ...

  8. selenium和phantomjs,完成豆瓣音乐排行榜的内容爬取

    代码要多敲 注释要清晰 哪怕再简单 #使用selenium和phantomjs,完成豆瓣音乐排行榜的内容爬取 #地址:https://music.douban.com/chart #导入需要的模块 f ...

  9. Python爬虫入门教程:豆瓣Top电影爬取

        基本开发环境 Python 3.6 Pycharm 相关模块的使用 requests parsel csv 安装Python并添加到环境变量,pip安装需要的相关模块即可. 爬虫基本思路 一. ...

随机推荐

  1. win7系统日志分支删除方法

    这篇日志有问题,自己亲身尝试失败,这里只提供思路,谢谢(改天突破再做修改) 之前电脑装过德国的叫啥子软件来着,当时在系统自动创建了日志,后来软件卸载了,发现还是有这个日志主键,(我有强迫症)心里不爽, ...

  2. Windows Server 2012四大版本介绍

    今天刚好要尝试安装Windows Server 2012,在网上百度了下发现有4个版本,分别是: Datacenter数据中心版. Standard标准版. Essentials版. Foundati ...

  3. [C/C++] const用法详解

    const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰的对象为常量(immutable). 我们来分情况看语法上它该如何被使用. 1.函数体内修饰局部变量.例:void fun ...

  4. Windows7系统目录迁移:Users,Progr…

    微软设计了比如:我的文档.我的OOXX,之类的东西,在WIN7下面更连游戏.下载等等目录都设计好了,我也很乖巧的把各种文件都分门别类的放进去了. 同时也很厉害的设计在了“%HOMEDRIVE%”里面, ...

  5. Windows的三种截屏方法

    「发表于知乎」戳

  6. 【题解】Atcoder AGC#01 E-BBQ Hard

    计数题萌萌哒~ 这道题其实就是统计 \(\sum_{i=1}^{n}\sum_{j=i+1}^{n}C\binom{a[i] + a[j]}{a[i] + a[j] + b[i] + b[j]}\) ...

  7. 【以前的空间】bzoj 1052 [HAOI2007]覆盖问题

    这道题的思路挺简单的……就是可以证明如果要覆盖一个区域内的点,那么一定有一个正方形在这“区域内的点所围成的最大矩形的四个角中的一个”(不要吐槽很多的“的”……),对于长度r是否可以覆盖整个区域内的点, ...

  8. bzoj1263: [SCOI2006]整数划分(高精度+构造)

    第一次写压位高精度只好抄黄学长的 代码最后一段想了好久一看评论区才知道黄学长写错了= =很气 自己最后改对了T^T 这题最优是一直划分3出来直到<=4 #include<iostream& ...

  9. Hcharts和Echarts----制作报表的工具

    Hcharts官网:https://www.hcharts.cn/Hcharts API文档:https://api.hcharts.cn/highcharts Echarts官网:http://ec ...

  10. 【图论】tarjan的离线LCA算法

    百度百科 Definition&Solution 对于求树上\(u\)和\(v\)两点的LCA,使用在线倍增可以做到\(O(nlogn)\)的复杂度.在NOIP这种毒瘤卡常比赛中,为了代码的效 ...