selenium在爬虫领域的初涉(自动打开网站爬取信息)
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)
效果:
遇到的一些问题
- 如何获取xpath?
这里说一个最简单的方法:
打开firefox浏览器,进入相应页面,右键某个网页元素点击查看元素,然后复制xpath.如下图所示:
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项目地址(系列文章包含常见第三库的使用与爬虫,会持续更新)
转载于:https://www.cnblogs.com/snailclimb/p/9086428.html
selenium在爬虫领域的初涉(自动打开网站爬取信息)相关推荐
- 爬虫漫游指南:HTTP/2 网站爬取
爬虫漫游指南 HTTP/2 网站爬取 最近写爬虫的时候遇到了一个用HTTP 2.0协议的网站,requests那套老经验在它身上不好用了,得专门针对HTTP 2.0进行开发. 因为与HTTP 1.x的 ...
- java爬虫系列(三)——漫画网站爬取实战
项目地址 数据库设计 ORM框架 代理浏览器 实战目标 代码解读 com.ouyang.crawlers.Manhua start() chapterBean() contentBean() 实测 启 ...
- python自动登录网站爬取数据_Python爬虫实战:自动化登录网站,爬取商品数据
前言 随着互联网时代的到来,人们更加倾向于互联网购物.某东又是电商行业的巨头,在某东平台中有很多商家数据.今天带大家使用python+selenium工具获取这些公开的商家数据 适合阅读人群:sele ...
- 【python爬虫】使用代理IP进行网站爬取
我使用代理IP是为了刷票,公司参加了比赛,投票规则是每IP只能投8票,并没有每天刷新还是永久限制,无奈之下使用代理IP, 代理ip网址 http://www.goubanjia.com/ http:/ ...
- 爬虫笔记——东方财富科创板数据爬取(selenium方法)
爬虫笔记--东方财富科创板数据爬取(selenium方法) 网站观察 网站分析 公司详情页面 具体代码 selenium方式爬取 优点:无需观察网站去查找数据来源 缺点:速度较requests方法更慢 ...
- 爬虫【1】打开网站,获取信息
爬虫[1]打开网站,获取信息 如何向网站发起请求并获取响应对象? urllib.request.urlopen 作用 向网站发起请求并获取响应对象 参数 url:需要爬取的URL地址 timeout: ...
- Python爬虫自学之第(⑤)篇——爬取某宝商品信息
题外话: <Pi Network 免费挖矿国外热门项目 一个π币大约值3元到10元>相信过去BTC的人,信不信未来的PI,了解一下,唯一一个高度与之持平的项目 能看到这里说明快进入动态网页 ...
- python爬虫今日头条_python爬虫—分析Ajax请求对json文件爬取今日头条街拍美图
python爬虫-分析Ajax请求对json文件爬取今日头条街拍美图 前言 本次抓取目标是今日头条的街拍美图,爬取完成之后,将每组图片下载到本地并保存到不同文件夹下.下面通过抓取今日头条街拍美图讲解一 ...
- 爬虫笔记——东方财富科创板数据爬取(requests方法)
爬虫笔记--东方财富科创板数据爬取(requests方法) 网页观察 网页源代码分析 具体代码 上篇文章:爬虫笔记--东方财富科创板数据爬取(selenium方法)介绍了selenium爬取东方财富科 ...
- Python之 - 使用Scrapy建立一个网站抓取器,网站爬取Scrapy爬虫教程
Scrapy是一个用于爬行网站以及在数据挖掘.信息处理和历史档案等大量应用范围内抽取结构化数据的应用程序框架,广泛用于工业. 在本文中我们将建立一个从Hacker News爬取数据的爬虫,并将数据按我 ...
最新文章
- seaborn可视化条形图并按照升序排序条形图进行可视化:Sort Bars in Barplot in Ascending Order in Python
- Effective C# 原则16:垃圾最小化(译)
- 前端Yslow的23个优化原则
- 20155301实验三 免杀原理与实践
- 《精通Windows Sockets网络开发--基于Visual C++实现》.(孙海民).[PDF]ckook
- 在小程序中使用百度地图
- 入选互联网名人堂的三位中国人
- html在线客服,网页在线客服代码_jQuery QQ客服
- java实现qq登录界面_java实现简单的QQ登录界面
- java答题软件_非常实用的java自动答题计时计分器
- bitcoin.conf详解
- outlook邮箱显示一直启动中_Outlook发送邮件一直停留在发件箱的解决办法
- 鸿蒙系统如何开启快捷方式,鸿蒙系统功能介绍-华为鸿蒙系统功能详细介绍 - 系统家园...
- 详细分析 Vue3 文档
- 2018 开学第一课
- 2020豆瓣电影首页热门电影+热门电视剧 API
- 美颜sdk与人脸识别技术的结合:为智能化时代注入美感
- TL431稳压输出Vout=4V
- Debian Apache完整
- VBA 模块级变量和过程级变量,全局变量,局部变量,end,exit end sub等影响
热门文章
- ftp列表错误或长城宽带连不上ftp的解决方法
- word没自动保存?===如何通过asd文件恢复
- Ubuntu下安装GParted并分区,进行虚拟机内存扩展
- HTML+CSS大作业——动画漫展学习资料电影模板(6页) 网页设计作业 _ 动漫网页设计作业,网页设计作业 _ 动漫网页设计成品,网页设计作业 _ 动漫网页设计成品模板下载
- 魔术方法、5个类的魔术属性和单态
- Linux下使用zlib实现文件压缩解压
- CenOS7 搭建无人值守安装服务器
- 中国轨道交通设备行业建设投资规模及十四五产量趋势研究报告2021-2027年版
- 在Ubuntu里配置slim
- python影评_用Python分析18万条《八佰》影评,看看观众怎么说?