如何用Python编写一个简单的爬虫进行数据挖掘(基于Jupyter NoteBook)

引言:

该文章将会从极其简略的角度去说明如何搭建一个爬虫对目标数据,有效信息进行挖掘,并且将小编在自学中遇到的一些问题进行引出和附上解决方案。本人为计算机科学与技术专业的在校大学生,数据挖掘和网络爬虫是自学的,若在一些专业术语和逻辑关系上表述不当,请多多见谅。

编写爬虫的基本思路:

1.获取页面,主要技术有requests、urlib、slenium、多进程多线程抓取、登录抓取、突破IP封禁和使用服务器抓取。
2.解析网页,主要技术有BeautifulSoup,lxml和re正则表达式。
3.存储数据,解决中文乱码(如encode-ISO-…)。

具体操作:

1.打开Jupyter NoteBook:如何用Python编写一个简单的爬虫进行数据挖掘(基于Jupyter NoteBook)_第1张图片

2.新建NoteBook,选择Python3
其实搭建网络爬虫也可以使用PyCharm等受众程度更高的开发平台,尤其是更偏向于开发的同志们,小编学习网络爬虫更偏向于做数据分析和用于竞赛,所以使用Jupyter NoteBook。
如何用Python编写一个简单的爬虫进行数据挖掘(基于Jupyter NoteBook)_第2张图片
3.搭建爬虫准备
搭建爬虫的话,必须先要引入相关的请求网页和抓取网页的包,我这里使用的是requests包和BeautifulSoup包。
具体代码:

#!/usr/bin/python
# coding:utf-8
import requests  # 引入包requests(就是一个简单的截取网页的技术)
from bs4 import BeautifulSoup  # 从bs4这个库中导入BeautifulSoup( 一种简单的网页数据抓取技术)

4.获取网页
那么解析网页,我们首先要定义我们要爬取的目标网址,只要在目标网址上对具体地址进行复制,粘贴到link中就行,非常简单,接着就是定义请求头的浏览器代理,伪装成浏览器,然后请求网页,就完成获取网页了。
打开目标网址,复制网址:
如何用Python编写一个简单的爬虫进行数据挖掘(基于Jupyter NoteBook)_第3张图片
具体代码段:

link = "http://6y.nuc.edu.cn/cxjyyjy/yjygs.htm"  # 定义link为目标网页地址
# 定义请求头的浏览器代理,伪装成浏览器
headers = {'User-Agent': 'Mozilla/5.0 (Windows;U;Windows NT 6.1;en-US;rv;1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
r = requests.get(link, headers=headers) # 请求网页

5.解析网页:
解析网页可用很多种技术,具体形式我们前面已经粗略地介绍过,小编这次使用的的是BeautifulSoup技术对刚刚获取的网页进行解析,当然,解析的信息可大可小,我们就选择一段开头文字进行爬取,对网页的目标信息进行解析,首先要对目标信息进行元素审查,获得其加载时间、Javascript函数、Object等信息。左侧为Html代码,右侧为CSS代码。
如何用Python编写一个简单的爬虫进行数据挖掘(基于Jupyter NoteBook)_第4张图片
然后要把复制的html对象转化为soup对象,接下来用soup.find()函数得到信息并打印出来,但注意这里并没有存储,只是成功获取了信息。soup.find(“p”,class_=“vsbcontent_start”).text.strip()的意思是找到目标信息的内容,定位到class是"vsbcontent_start"的p元素,strip()去除左右空格。
具体代码:

soup = BeautifulSoup(r.text.encode('ISO-8859-1'), "html.parser")  # 使用BeautifulSoup解析
title = soup.find("p",class_="vsbcontent_start").text.strip()
print(title)  # r.text为获取的网页内容代码

效果如下:
如何用Python编写一个简单的爬虫进行数据挖掘(基于Jupyter NoteBook)_第5张图片
值得注意的是,在很多教程里往往忽略了编码机制的问题,因为中文和机器语言的编码机制是不一样的,因此如果直接对目标信息进行解析,往往会出现无法运行,出现乱码的情况,因此,我们可以在r.text后面加上encode(‘ISO-8859-1’),当然encode括号里的语言视情况而不同!
6.储存挖取的数据:
小编选择存储数据到txt文件,在第二部的基础上加上2行代码就可以把这个字符串保存在text中,并储存到本地。txt文件和你的Python文件应该是放在同一个文件中。
具体代码:

with open(r'C:\Users\Lenovo\Desktop\title_test.txt',"a+") as f:
    f.write(title)

具体效果:
如何用Python编写一个简单的爬虫进行数据挖掘(基于Jupyter NoteBook)_第6张图片
这样,就完成了简单的数据爬取了。
完整代码段:

#!/usr/bin/python
# coding:utf-8
import requests  # 引入包requests(就是一个简单的截取网页的技术)
from bs4 import BeautifulSoup  # 从bs4这个库中导入BeautifulSoup( 一种简单的网页数据抓取技术)


link = "http://6y.nuc.edu.cn/cxjyyjy/yjygs.htm"  # 定义link为目标网页地址
# 定义请求头的浏览器代理,伪装成浏览器
headers = {'User-Agent': 'Mozilla/5.0 (Windows;U;Windows NT 6.1;en-US;rv;1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
r = requests.get(link, headers=headers) # 请求网页
soup = BeautifulSoup(r.text.encode('ISO-8859-1'), "html.parser")  # 使用BeautifulSoup解析
title = soup.find("p",class_="vsbcontent_start").text.strip()
print(title)  # r.text为获取的网页内容代码
with open(r'C:\Users\Lenovo\Desktop\title_test.txt',"a+") as f:
    f.write(title)

当然,大家千万要注意Python语法里缩进的问题,否则还是会在编写程序的过程中遇到一点小麻烦。

你可能感兴趣的:(python,数据挖掘,html,编程语言,大数据)