python3爬虫基本操作——抓取股票信息

目录

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格的方法,可以在博客下方指点一下

 

 

 

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

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

相关文章

用 Python 爬取股票实时数据

今天我们一起来学习一个 Python 爬虫实战案例&#xff0c;我们的目标网站就是东方财富网&#xff0c;废话不多说&#xff0c;开搞 网站分析 东方财富网地址如下 http://quote.eastmoney.com/center/gridlist.html#hs_a_board 我们通过点击该网站的下一页发现&#xff0c;网页内…

爬取股票信息

爬取网站 网易财经 创建的文件 List_url.py from finance.code_list import CodeListdef Shanghai_Stock_Index():"""上证指数"""code int(input("证券代号&#xff1a;"))if code > 201000 and code < 900957:year int(input…

实战干货!用 Python 爬取股票实时数据!

今天我们一起来学习一个 Python 爬虫实战案例&#xff0c;我们的目标网站就是东方财富网&#xff0c;废话不多说&#xff0c;开搞 网站分析 东方财富网地址如下 http://quote.eastmoney.com/center/gridlist.html#hs_a_board 我们通过点击该网站的下一页发现&#xff0c;网页…

基于Python爬虫的股票成交量数据抓取分析系统

目录 数据获取 2 1.1. 实验环境搭建 2 1.2. 抓取数据 2 1.2.1. 新浪财经 3 1.2.2. 网易财经 6 1.2.3. 东方财富 12 1.2.4. TuShare (挖地兔) 19 1.2.5. 其他平台 21 1.3. 数据获取总结 22 1.3.1. 股票代码抓取的总结 22 1.3.2. 日线数据抓取总结 22 1.3.3. 反爬虫策略及解决的总…

朋友股票亏惨了,我一怒用Python爬取了证券最新数据

大家好&#xff0c;我是辣条。 抓取目标: url:http://webapi.cninfo.com.cn/#/marketDataDate 数据目标: 获取 证券代码 证券简称 交易日期 开盘价 最高价 最低价 收盘价 成交数量 难点: 请求头参数mcode 加密生成 使用第三方库: 1. requests 2. execjs 3. js2py 4. math …

Python爬虫实战:爬取股票信息

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者&#xff1a; PS&#xff1a;如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资料以及群交流解答点击即可加入…

python爬虫实战-抓取同花顺股票信息

前言&#xff1a; 在之前介绍requests的基础上&#xff0c;现在开始进行实战。 目标网站&#xff1a;http://q.10jqka.com.cn//index/index/board/all/field/zdf/order/desc/page/ 一 涉及到的技术点&#xff1a; &#xff08;1&#xff09;requests: 用于网页请求 &#xff…

微信小程序登录面板切换不了账号,显示网络连接失败?

打开开发工具就会显示这个提示&#xff0c;无论我是点击确定还是取消&#xff0c;切换账号都显示网络连接失败~&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 我看了一些博客&#xff0c;说是选择直连代理。我试了&#xff0c;还是显示 网络连接…

wxpy 扫码登录微信报错 KeyError: pass_ticket(网页版微信登录失败)

使用wxpy开发微信聊天机器人&#xff0c;结果扫码登录后&#xff0c;提示&#xff1a; KeyError: pass_ticket解决方法&#xff1a;wxpy是根据网页版微信的接口封装的库。用wxpy&#xff0c;得去试试网页版微信&#xff08;https://wx.qq.com/&#xff09;看能否正常登录。 如…

pc端集成企业微信的扫码登录及遇到的问题

集成步骤&#xff1a; 1、在企业微信后台中添加应用 2、记录下应用的相关信息&#xff0c;在后文要用到 3、引入企业微信js 旧版&#xff1a;http://rescdn.qqmail.com/node/ww/wwopenmng/js/sso/wwLogin-1.0.0.js 新版&#xff08;20210803更新&#xff09;&#xff1a;http…

uniapp微信登录报错-100,login:fail [:-1]未能完成操作。(PGWXAPI错误-1。)

报内容&#xff1a; { “errMsg”: “login:fail [:-1]未能完成操作。&#xff08;PGWXAPI错误-1。&#xff09;,”, “errCode”: -100, “code”: -100 } 原因&#xff1a; 没有在manifest.json文件里面配置appsecret(微信开放平台申请移动应用之后会有个appsecret) 为什么没…

Android微信登录页面实现

利用Android实现微信手机端的登录页面&#xff0c;对于登录的输入做了一些的条件限制诸如&#xff0c;非空&#xff0c;长度限制等&#xff1b; 效果图如下&#xff1a; xml文件代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <Line…

分享一个基于GPT-3.5 Turbo的开源项目,界面简洁大气,反应速度快

今天在github又发现一个国内的大神开源的chatGPT项目。先看看整体的效果如何吧。 这个项目是基于OpenAI GPT-3.5 Turbo API 的demo。 本地部署 环境准备 安装node 由于该项目是使用node开发&#xff0c;所以&#xff0c;在部署之前先要安装好node环境。检查您的开发环境和部…

一款反应速度完全碾压chatgpt3.5turbo的软件 curor,直接运行

1、软件简介 Build Software. Fast.是一款可以在编辑器中使用 openAI GPT-4 模型编写的软件 官网地址&#xff1a;https://www.cursor.so/ 2.安装方法 不用安装直接运行exe3.使用方法 CTRLK(生成代码)CTRLL(对话功能)

OpenAI ChatGPT3.5-turbo实际解决问题能力评测

OpenAI ChatGPT3.5-turbo实际解决问题能力评测 ​ 程序员在coding的时候会经常遇到需要查阅资料的情况&#xff0c;最好的结果是直接能拿到一份好用的demo版本code&#xff0c;本次我们来评测&#xff1a;bing搜索和chatGPT3.5&#xff0c;解决实际问题&#xff1a;“html 图片…

程序员“摸鱼”神器,GitHub Copilot“凭本事”完全免费

上周Microsoft 365 Copilot的发布会上几段演示视频让朋友圈沸腾了一整天&#xff0c;颠覆&#xff0c;失业&#xff0c;工业革命刷屏&#xff0c;普遍的焦虑中有工作中重度依赖office的朋友表示如果功能都是真的&#xff0c;那么确实可以节约出很多时间摸鱼&#xff0c;但是立马…

AI人工智能时代真的到来了吗?

近一个月来&#xff0c;关于AI人工智能的话题此起彼伏&#xff0c;先有OpenAI发布GPT-4&#xff0c;后有百度推出文心一言&#xff0c;再有微软把GPT-4接入Office全家桶并命名为“Microsoft 365 Copilot”&#xff0c;除此之外&#xff0c;微软Bing还上线了AI绘图功能、谷歌开放…

文字生万物,AI极简史

AI 算法就像一个人类婴儿 哈罗德科恩花了 42 年把 AARON 铸成“另一半自己”。它是一段被画家造出来的计算机程序&#xff0c;或许也可以叫做 AI 系统。先是花了 20 年学会黑白简笔画&#xff0c;1995 年&#xff0c;它第一次表演上色&#xff0c;以一个庞大的机器模样&#xf…

WindTerm使用(暂停更新)

作为一个经常和代码以及服务器打交道的人&#xff0c;连接远程服务器所使用的工具肯定是越方便越好。目前&#xff0c;我使用的是xshell5和MobaXterm两个。Xshell最新的是7&#xff0c;破解版的我懒得去找&#xff0c;那xshell7免费使用一段时间后&#xff0c;就得付费&#xf…

【论文速递】ACM MM 2022 - 基于统一对比学习框架的新闻多媒体事件抽取

【论文速递】ACM MM 2022 - 基于统一对比学习框架的新闻多媒体事件抽取 【论文原文】&#xff1a;Multimedia Event Extraction From News With a Unified Contrastive Learning Framework 【作者信息】&#xff1a;Liu, Jian and Chen, Yufeng and Xu, Jinan 论文&#xff…