作为一个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。
代码中的data就是函数返回的网页源码,'html.parser'是python内置的解析器,建议用'lxml',它执行速度比
'html.parser'快,但是需要额外安装。
(1)提取想要的信息
构建并解析之后,就可以进行遍历查找了。
那么问题来了,如何查找?根据什么来查找?用什么来查找?
根据网页源码内容的一个结点为例:
一个Beautifulsoup对象内基本包含以下四个内容对象:
Tag:标签,最基本的信息组织单元,分别用<>和>标明开头和结尾。如上图中的 和
表示结尾