Python爬虫简述

Python爬虫技术是现在主流的爬虫技术,此篇将从基础方面简述基于Python爬虫的一系列方法。

这篇文章使用的是Python的requests-html库来进行数据爬取。

首先我们需要在python中安装requests-html库,使用:

pip3 install requests-html

requests-html的基本使用方法:

from requests_html import HTMLSession
# 获取请求对象
session = HTMLSession()
# 往新浪新闻主页发送get请求
sina = session.get('https://news.sina.com.cn/')
# print(sina.status_code)
sina.encoding = 'utf-8'
# 获取响应文本信息,与requests无区别
 print(sina.text)

我们来解析一下这段代码。首先,我们需要在py文件中引入这个爬取库(废话)。之后我们通过session = HTMLSession()创建了一个Session对象,这个对象的功能是进行网页访问(这里不多述)。

之后我们可以通过这个对象来进行一系列网页访问方法。

这里我们使用了sina = session.get('https://news.sina.com.cn/')这个函数。它的意思是使用get方法访问了新浪主页,当然这里也存在post方法,这个就不细细讲解了,具体参考我以前的文献。我们暂时只需要使用get就行。

之后,我们成功访问了这个网页,并通过sina.text打印了整个网页的信息。我们得到的结果大概是这样的:

这里,我们直接访问并打印了关于新浪首页的HTML信息(注:HTML即构成网页的代码,即整个网页的源数据),这就方便我们进行数据分析。

其次,我们可以通过xx.html.links来获取网页中所有的链接并打印:

sina = session.get('https://jd.com/')
# 得到京东主页所有的链接,返回的是一个set集合
print(sina.html.links)

但光是获取到整个网页信息还不够,我们还需要对网页信息进行筛选才能获取我们需要的信息。

这里首先,我们需要了解一个概念:选择器

我们观察之前所打印的网页信息,可以发现存在很多如 <div>的字样,这是一个HTML标签,每个标签代表着一个HTML元素,换个好理解的说法,它就像是PS中所使用的图层,一个精致的图片是由无数个形状、大小不同的图层组成的。而网页也是如此。像<div>这样作为图层存在的标签还有很多包括<li>、<span>等等,他们一般通过如 <div>内容</div> 的形式来表示这里我们不多做讨论。

我们需要对整个页面数据进行筛选,就是要选择到合适的HTML标签并输出其中的内容。这里我们就要用到选择器。

选择器就是用来选择合适HTML标签的工具,这里我们不多述,具体参考以前的文档,我们直接使用Python数据爬取,需要明白,一般相同的数据都有着类似的选择器,我们通过在需要爬取的页面按f12,

通过一步步点击小三角,找到需要爬取的内容再复制选择器:

即可找到其选择器方法

之后回到Python上来:

obj = session.get(url)
# 1.通过css选择器选取一个Element对象
 获取id为content-left的div标签,并且返回一个对象
content = obj.html.find('div#content-left', first=True)
print(content.text)

这个方法我们也可以理解,首先获取了网页内容新建了obj对象,之后我们可以通过obj.html.find(选择器)即可找到相应的选择器,不过这里,我们一般找到的可能不止一个HTML对象,返回的是一个数组,使用:content = obj.html.find('div#content-left', first=True)[0]来选择数组内对象。

以上大概为基础的Python爬取使用方法。更加进阶的用法请自行百度参考。

顺便插一句,由于数据爬取与分析的需要,其爬取结果往往需要存入数据库中,数据库的使用与Python的数据库应用请参考—MySQL数据库基础 Python数据库应用