selenium在爬虫领域的初涉(自动打开网站爬取信息)

news/2024/5/20 5:35:35/文章来源:https://blog.csdn.net/weixin_30505225/article/details/98795096

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项目地址(系列文章包含常见第三库的使用与爬虫,会持续更新)

转载于:https://www.cnblogs.com/snailclimb/p/9086428.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_848745.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java开源网站

Java开源大全(www.open-open.com)收录最全,最新的Java开源软件,发布最新IT资讯,提供开发文档、技术经验在线分享平台。www.open-open.com/ Java开源软件 - 开源软件库 - 开源中国社区 开源中国社区(OSChina)共收录了 5810 款Java 软件... 共有5810款Java 开源软件,第1页Android…

Spring cloud实战 从零开始一个简单搜索网站_freemark 以及configserver的应用(二)

先来说下我的网站架构吧 前面大家也看到了 既然叫博客搜 自然是搜索 博客的 我把每个网站会抽象成一个Client (为了更好的学习cloud) 上面只是展示了主要部分 像Hystrix Ribbon Zuul等等就不画上去了 下面我们再建一个Client 选Eureka Server就可以了 修改…

如何使用postman访问网站

1、输入Request URL2、选择Request Method3、输入需要的Request Headers注意:一般token会在Headers中 转载于:https://www.cnblogs.com/jishugaochao/p/10192076.html

互联网网站架构升级----分布式环境的构建

随着网络流量爆发式增长,几百人维护一个项目将是一个可怕的噩梦,业务拆分势在必行。拆分的业务形成一个个独立的系统,系统间的协调又变成了一个棘手的问题,所以维护这些系统间协调关系的分布式环境组件将发挥至关重要的作用。 由于…

scrapy-redis案例(一)爬取中国红娘相亲网站

前言:本案例将分为三篇。 第一篇,使用scrapy框架来实现爬取中国红娘相亲网站。 第二篇,使用scrapy-redis 简单的方式爬取中国红娘相亲网站。(使用redis存储数据,请求具有持续性,但不具备分布式)…

scrapy-redis案例(二)爬取中国红娘相亲网站

前言:本案例将分为三篇。 第一篇,使用scrapy框架来实现爬取中国红娘相亲网站。 第二篇,使用scrapy-redis 简单的方式爬取中国红娘相亲网站。(使用redis存储数据,请求具有持续性,但不具备分布式)…

scrapy-redis案例(三)爬取中国红娘相亲网站

前言:本案例将分为三篇。 第一篇,使用scrapy框架来实现爬取中国红娘相亲网站。 第二篇,使用scrapy-redis 简单的方式爬取中国红娘相亲网站。(使用redis存储数据,请求具有持续性,但不具备分布式)…

python-scrapy模拟登陆网站--登陆青果教务管理系统(一)

前言: 第一篇,分析青果教务管理系统登陆模块,理清思路 第二篇,使用常规的python常用库 requests来实现模拟登陆 第三篇,使用scrapy来实现模拟登陆 目的在于了解模拟登陆网站的要点和方法,了解http请求的一些…

python-scrapy模拟登陆网站--登陆青果教务管理系统(二)

前言: 第一篇,分析青果教务管理系统登陆模块,理清思路 第二篇,使用常规的python常用库 requests来实现模拟登陆 第三篇,使用scrapy来实现模拟登陆 目的在于了解模拟登陆网站的要点和方法,了解http请求的一些…

python-scrapy模拟登陆网站--登陆青果教务管理系统(三)

前言: 第一篇,分析青果教务管理系统登陆模块,理清思路 第二篇,使用常规的python常用库 requests来实现模拟登陆 第三篇,使用scrapy来实现模拟登陆 目的在于了解模拟登陆网站的要点和方法,了解http请求的一些…

【问底】徐汉彬:大规模网站架构的缓存机制和几何分形学

【问底】徐汉彬:大规模网站架构的缓存机制和几何分形学 发表于18小时前| 2273次阅读| 来源CSDN| 14 条评论| 作者徐汉彬问底CDN缓存徐汉彬allowtransparency"true" frameborder"0" scrolling"no" src"http://hits.sinajs.cn/A1/…

在IIS上部署PHP网站

1、启动iis服务器,打开IIS服务器 打开IIS服务器,点击网站,右击“添加网站” 2、创建网站 点击“添加网站”后,进入页面填写网站相关内容,如:网站名称、物理路径(网站所在文件夹),点击“确定”创建成功 3、…

借助花生壳把内网网站映射给外网。(内网穿透/路由器端口映射)、外网控制内网...

其实这个东西几年前我就弄过,但是当时心智不成熟,没学会怎么玩耍,今天玩了一把也没啥的, 1.搭建网站 假设内网电脑是192.168.100.9 访问Http://192.168.100.9能打开网站,这样就ok了,不能用的自己百度. 2. 端口映射 貌似…

多个端口指定多个目录。花生壳多个域名多个网站

配置php网站 打开httpd.conf Listen 88 Listen 8888 打开vhost.conf Listen 80NameVirtualHost *:80 <VirtualHost *:88> ServerName localhost DocumentRoot "D:/phpStudy/WWW"<Directory "D:/phpStudy/WWW">Options -Indexes FollowSymLinks…

大型网站数据库优化及浅析大型网站的架构(转)

大型网站数据库优化 千万人同时访问的网站&#xff0c;一般是有很多个数据库同时工作&#xff0c;说明白一点就是数据库集群和并发控制&#xff0c;这样的网站实时性也是相对的。这些网站都有一些共同的特点&#xff1a;数据量大&#xff0c;在线人数多&#xff0c;并发请求多…

解决github网站 git 操作太慢问题

上网查找改善方法解决了问题&#xff1a; 思路&#xff1a;git clone 特别慢是因为github.global.ssl.fastly.Net域名被限制了。只要找到这个域名对应的ip地址&#xff0c;然后在hosts文件中加上ip–>域名的映射&#xff0c;刷新DNS缓存就可以了 1.获取 global.ssl.fastly地…

漏洞库网站

关于漏洞的国内外网站

IIS网站部署——基本流程

近期在一个项目中用到了IIS服务器,在学习使用的过程中遇到了很多问题&#xff0c;下面先对IIS网站部署的基本流程做个简单介绍。 以Windows 7 64位系统为例 一.IIS服务开启 1.打开Windows功能 依次打开控制面板 — 程序&#xff0c;再点击“打开或关闭Windows功能”&#xf…

Springboot 系列(十四)迅速启用 HTTPS 加密你的网站

点赞再看&#xff0c;动力无限。Hello world : ) 微信搜「 程序猿阿朗 」。 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录&#xff0c;有很多知识点和系列文章。 1. 获取 HTTPS 证书 正常情况下 HTTPS 证书需要从证书授权中心获得&#xff0c;这样获得的证书才…

网站跨域传递的原理+同源策略+src跨域+callback回调函数

一&#xff0c;传输数据的几种数据格式 1&#xff0c;Html Html由一些普通文本组成。如果服务器通过XMLHTTPRequest发送html&#xff0c;文本将存储在responseText属性中。 从服务器端发送的html的代码在浏览器端不需要用JavaScript进行解析。 可以直接使用innerHTML属性把服务…