学习爬虫的目的便是模拟浏览器向服务器发出请求,进而获取所需数据。
爬虫可以分为抓取页面、分析页面和存储数据三步。
每一步中,python都有强大的模块来让我们使用。
今天先来学习请求库urllib的基本使用。
(python的安装请参考python开发环境搭建)
安装urllib库
(urllib是python内置的库,一般不需要额外安装)
方法一 win+r 打开命令行,然后输入pip install urllib安装urllib库。输入cmd打开命令行输入pip install urllib 回车,等待安装完成即可
在命令行中输入python进入python,
输入import urllib,若结果如下则说明urllib安装成功:urllib 安装成功
方法二:打开https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient,找到对应版本的urllib的wheel文件,下载到本地,然后再用pip 安装即可(注意:下载的文件切不可重命名,要用绝对路径)。
使用urllib
urllib包含四个模块:request:HTTP请求模块,可以用来发送请求。
error :异常处理模块。
parse :提供了许多url处理方法,比如拆分、解析等。
robotparser :用的比较少,可以略过。利用最基本的urlopen()方法,可以完成最基本的简单网页的GET请求抓取。urllib.request.urlopen(url,data=None,[timeout,]*,cafile=None,capath=None,cadefault=False,context=None)下面看一个具体的例子: 打开【西安天气】西安天气预报,蓝天,蓝天预报,雾霾,雾霾消散,天气预报一周,天气预报15天查询,打开开发者选项,我们可以看到网页源代码:浏览器显示结果在python IDEA运行上述代码
运行结果如下:运行结果
从图中可以看到,网页源代码就被下载下来了,通过解析网页源代码我们就可以获得我们想要的天气数据。
由于还没学到解析库,下面我们修改代码,用正则表达式来提取温度并绘图。
# -*-coding:utf-8 -*-
'''@author 马秋平urllib的 基本用法'''
from urllib.request import urlopen #导入urlopen
import re #正则模块
import matplotlib.pyplot as plt #用来绘图
import numpy as np #用来作矩阵运算
pattern = re.compile(r'(\d)+℃')#构建正则匹配模式
url = 'http://www.weather.com.cn/weather/101110101.shtml' #链接
res = urlopen('http://www.weather.com.cn/weather/101110101.shtml') #传入url,其他均为可选参数
result = res.read().decode('utf-8')#打印网页源代码
temperature = re.findall(pattern,result)#用正则来匹配、获取温度
print(result) #打印网页源代码
print(temperature)#打印获取到的温度
data=[]#创建一个空列表用来存放温度
x=np.linspace(0,5,6) #x轴
for i in temperature:
data.append(int(i)) #类型转换,str--int
plt.scatter(x,data) #绘制散点图
plt.title('temperature') #设置标题
plt.xticks(x,['2','3','4','5','6','7'])#设置x轴标注,代表日期
plt.xlabel('date') #x轴标签
plt.grid(True) #显示网格线
plt.show()#显示绘图
运行结果如下
待更。。。。。。。。。
邮箱 :maqiuping@stu.xidian.edu.cn
欢迎交流,共同进步。