目录

1. requests库发送请求,获取响应内容的字符串格式

2.Beautifulsoup解析并获取指定的内容

3.selenium库


没想到我的第一次 — — 写博客就这样毫无预兆地发生了。其实一直对博客非常感兴趣,博客是很好的交流平台,非常
感谢各路博客大神的帮助,让我一路入坑到现在的地步。为何突然间决定写博客呢?当然是为了应付python期末考试......
额,不!当然是为了分享自己学习的过程,让更多像我一样的小白少走弯路,也是为了能更好地向各位博客大神学习。
一步一深坑的博客小白成长之旅正式开启!
作为一个python爬虫小白的个人理解,python爬虫原理就是发送请求并获得服务器响应,得到html的页面代码内容,通
过解析内容然后定位获取想要的数据信息并保存。说不定还能得到正常网页浏览之外的数据,哈哈。
基本流程:
今天用功能强大的python3爬虫尝试一下抓取相关的股票信息。网址: http://www.xuangubao.cn/
目的:得到网站的“利好”标签和对应的股票名称,并保存。
环境:python3.x和pycharm
requests+Beautifulsoup抓取静态网页:
selenium+Beautifulsoup抓取动态加载:

1. requests库发送请求,获取响应内容的字符串格式

requests库内有许多的模拟浏览器行为的请求方法,使用GET请求获取html
参数:requests.get(url,params,**kwargs)
url:需要爬取的网站地址
params:是url的额外参数,字典或者字节流格式,可选。
**kwargs:12个控制访问的参数,在这次的爬取过程中只使用到了hearders和timeout参数。
请求头hearders在python爬虫过程中非常重要,它能是爬虫模拟浏览器的行为进行请求,而不会被服务器当成爬虫程序拒绝访问。
其中的"User-Agent"是必不可少的,对于刚入门的我,一般也只添加这一个参数就可以。
将相应得到的二进制形式内容解码成“utf-8”
输出检查 一下获取到的内容是否正确:print(response)
可以看到是正确的html格式,并非是乱码
最后,函数返回得到的网页源码
整个函数如下:

简单讲一下在网页上查看html的源码
(1)首先,先进入网站

(2)随意选一个位置 --> 点击鼠标右键 --> 点击检查

乍一看跟pyhon代码获取的内容有点像,都像一个树状结构,其实两者相差不多。

2.Beautifulsoup解析并获取指定的内容

Beautifulsoup是python第三方库,可以从HTML或XML文件中根据我们设定的条件提取我们想要的数据。
Beautifulsoup将复杂的HTML文档转换成一个复杂的树形结构,即一个Beautifulsoup对象,其每个结点都是
python对象,当我们获取网页内容就是提取对象里面的内容。
个人简单理解:Beautifulsoup将python语言不能直接处理的HTML文档树转换成一个python对象,也以树状结
构进行存储。在python里面对这个对象进行操作就可以了。

(1)首先,构建一个Beautiful对象

  
第一个参数是要解析的HTML文本字符串,第二个参数是选择解析器解析HTML。返回一个名为soup的Beautiful对象。
代码中的data就是函数返回的网页源码,'html.parser'是python内置的解析器,建议用'lxml',它执行速度比
'html.parser'快,但是需要额外安装。

(2)提取想要的信息

构建并解析之后,就可以进行遍历查找了。
那么问题来了,如何查找?根据什么来查找?用什么来查找?
根据网页源码内容的一个结点为例: 
一个Beautifulsoup对象内基本包含以下四个内容对象:
     Tag:标签,最基本的信息组织单元,分别用<>和</>标明开头和结尾。如上图中的 </a>和</div>表示结尾
    Name:标签的名字。如图,<div ......>和<a ......>名字分别是 'div' 和 'a',格式:<tag>.name
Attributes:标签的属性,字典形式,格式:<tag>.attrs
NavigableString:标签内非属性字符串,<>...</>中的字符串,格式:<tag>.string
comment:标签内字符串的注释部分,一种特殊的Comment类型
例如前一段代码中得到了一个soup对象,通过soup.string输出非属性字符串,对象的操作这部分就不详解了。
 
搜索文档树是通过指定标签名来搜索元素,另外还可以通过标签的属性值来精确定位某个结点元素。在 Beautifulsoup中
有find、findall、find_all、select等方法提取信息,根据不同版本会有区分。我的Beautifulsoup4使用find_all函数。
find_all(name,attrs,recursive,string,**kwargs)
详细参数介绍我就不赘述了,只简单讲解一下我的代码使用到的基本操作。
  
查找文档树中标签名字为'li',属性中class='news-item'的内容。class在python里是关键字,所以为 class_=
此条语句执行完后,item保存的是网页内所有文章的所有内容
先筛选出文章内容,然后返回这个对象。
之后就是根据自己的思路,写好逻辑代码并得到有 '利好'标签的文章,再得到股票的名称,不多说,直接上代码

最后执行:
结果:

激动人心的时刻到了,赶紧打开选股宝网站看看。

 
究竟对不对呢?哈哈,网页中的确也只有这两个显示是利好的。
不过是否有疑问。在网页上还能点击加载更多,也就是其实还有更多的数据等着我们去爬呢。

但是这两三天找了好久的资料,不知道是不是requests库只能静态抓取,而不能支持动态加载,或者是自己对
requess库+Beautifulsoup解析动态加载的认知还不到位。修改了请求头里的全部信息再加上解析动态加载点击的
json,然后返回“点击加载更多”的网址继续请求数据。可到最后还是没有成功。感觉整个脑袋都不属于自己了。  
  
于是干脆直接霸王硬上弓,使用selenium库,解析数据仍然使用Beasoup库。selenium模拟人对浏览器的动作
(比如点击加载下一页),实现操作浏览器的自动化(打开网页、输入文字、点击加载等)。
只需要将发送请求的Requests换成selenium,网页的解析依旧使用Beautifulsoup

3.selenium库

selenium是python的第三方库,需要安装。selenium可以模拟真实浏览器,它是一个自动化测试工具,支持多
种浏览器,包括Chrome、FireFox、IE、Safair,听起来非常不错,功能也很强大。selenium的一个特点是电脑必
须安装有浏览器和浏览器驱动。比如要使用谷歌浏览器模拟网页行为,则需要下载谷歌浏览器和谷歌浏览器驱动。
只需要换掉get_Hteml函数的内容就可以。
简单介绍一下,需要使用到time模块,等待浏览器加载,
(1)选择自己的浏览器并打开
diver=webdriver.Chrome()
我的是Chrome浏览器,所以webdriver后面是Chrome(),一般里面不需要参数就可以了。    
不过我的会出现一个错误。
系统找不到我的浏览器驱动,建议安装,将浏览器驱动路径添加到系统变量PATH中也不行。
最后在网上查找到Chrome浏览器的方法,在代码中添加路径,具体原理不是太懂,不过添加之后Chrome浏览
器终于能使用了。需要使用os模块
通过get()方法打开浏览器
当执行此行代码时会自动打开浏览器,浏览器会在桌面上弹出,不需要进行操作,等待就可以了
(1)模拟浏览器行为
      主要是向下滑动和点击加载更多,这个是selenium本身就已经制定好了规则,只需拿来使用就可以了,方便、快速。

这段代码只是下拉到浏览器网页最下面并点击了一次,对其进行循环就可以设定点击加载的次数了,即加载多少页

修改后的get_Html函数

最后运行结果

可以看出比之前多了一些股票名称的信息,如果循环点击加载,就可以获得更多的股票的状态,不过等待的时间也
就会更加长。还有可以用withopen()对读取到的数据进行txt文本存储,在这我就不详细介绍了。
第一次写博客,希望大家能多多谅解,如果有需要改正的地方和能提高bi格的方法,可以在博客下方指点一下

python3爬虫基本操作——抓取股票信息相关推荐

  1. Python3爬虫图片抓取

    (1)实战背景 上图的网站的名字叫做Unsplash,免费高清壁纸分享网是一个坚持每天分享高清的摄影图片的站点,每天更新一张高质量的图片素材,全是生活中的景象作品,清新的生活气息图片可以作为桌面壁纸也 ...

  2. Python爬虫抓取股票信息

    介于我们小组的项目需求是需要在网上抓取股票信息,然后做成可视化界面.最开始的想法是利用Java抓取,但是由于Java代码有点冗余,决定使用Python.项目开始,遇到了极大的问题,由于小组成员对于Py ...

  3. Python爬虫采集抓取:Python3.x+Fiddler 采集抓取 APP 数据

    随着移动互联网的市场份额逐步扩大,手机 APP 已经占据我们的生活,以往的数据分析都借助于爬虫采集爬取网页数据进行分析,但是新兴的产品有的只有 APP,并没有网页端这对于想要提取数据的我们就遇到了些问 ...

  4. python3爬虫简易入门图片_Python3爬虫图片抓取

    在上一章中,我们已经学会了如何使用Python3爬虫抓取文字,那么在本章教程中,将通过实例来教大家如何使用Python3爬虫批量抓取图片. (1)实战背景 上图的网站的名字叫做Unsplash,免费高 ...

  5. python简单爬虫代码-python爬虫超简单攻略,带你写入门级的爬虫,抓取上万条信息...

    原标题:python爬虫超简单攻略,带你写入门级的爬虫,抓取上万条信息 最近经常有人问我,明明看着教程写个爬虫很简单,但是自己上手的时候就麻爪了...那么今天就给刚开始学习爬虫的同学,分享一下怎么一步 ...

  6. Python爬虫:抓取智联招聘岗位信息和要求(进阶版)

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:王强 ( 想要学习Python?Python学习交流群 ...

  7. python爬网页数据用什么_初学者如何用“python爬虫”技术抓取网页数据?

    原标题:初学者如何用"python爬虫"技术抓取网页数据? 在当今社会,互联网上充斥着许多有用的数据.我们只需要耐心观察并添加一些技术手段即可获得大量有价值的数据.而这里的&quo ...

  8. python抓取网页电话号码_利用正则表达式编写python 爬虫,抓取网页电话号码!...

    利用正则表达式编写python 爬虫,抓取网页联系我们电话号码!这里以九奥科技(www.jiuaoo.com)为例,抓取'联系我们'里面的电话号码,并输出. #!/usrweilie/bin/pyth ...

  9. Python爬虫实战---抓取图书馆借阅信息

    Python爬虫实战---抓取图书馆借阅信息 原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约 ...

最新文章

  1. CKEditor的安装与基本使用
  2. Visual studio 2017基本配置
  3. python开发微信小程序-Django微信小程序后台开发教程的实现
  4. SpringCloud实践分享-日志收集Kafka-ELK
  5. 韩寒:一个产品经理的自我修养
  6. jquery监听窗口大小改变事件jquery.resizeend
  7. 定量的方法如何能划分类别?
  8. neo4j values
  9. JavaScript:闭包
  10. LeetCode 236. 二叉树的最近公共祖先(递归)
  11. ubuntu lamp环境(阿里云搭建lamp)
  12. 解决laydate坑之chang回调无效 range开启
  13. 【学习day1】图像分类数据集+softmax回归
  14. zblog php的foot模板在那里,zblog主题模板修改教程 zblog模板怎么修改?
  15. Python-Scrapy 获取历史双色球开奖号码
  16. VUE项目中优雅使用EasyPlayer实时播放摄像头多种格式视频
  17. osgearth加载国界线、省界线、城市线
  18. 合服 两个服务器都有什么作用,阴阳师合服是什么意思?合服合区问题汇总详解[多图]...
  19. C++输入日期判断是周几
  20. IOS 多线程之信号量

热门文章

  1. 太用力的人跑不远,android开发视频
  2. mysql 一个月以前_mysql查询昨天 一周前 一月前 一年前的数据
  3. R语言 - RStudio使用Git版本控制
  4. Delphi Web前端开发教程(2):基于TMS WEB Core框架
  5. PS 学习笔记 15-橡皮擦工具组
  6. 西北乱跑娃 --- python正则匹配中文以及数字和标点
  7. 【26】地图可视化:基于 Echarts + Flask 的动态实时地图组件 - 点气泡流向组合区域三级下钻地图
  8. php ziparchive 损坏,通过ZipArchive php获取损坏或空拉链
  9. 仅3w报价B站up主竟带来1200w播放!品牌高性价比B站投放标杆!
  10. 服务端返回中文乱码的分析和解决办法