爬虫典型使用的库

生成云图片所需要的库

一.wordcloud

原理:根据一个文本中一个词语频繁出现的频率而绘制词云
常规方法
	配置对象参数:c=wordcloud.WordCloud(XXXX)
	加载词云文本: c.generate(待分析的文本)
	输出词云文件: c.to_file(“XX.png”)(可输出的格式有png和jpg)
配置对象参数
	典型使用例子
def wordCloud_show(self):
        f = open('C:/Users/Administrator/PycharmProjects/practice2/novel.txt','r',encoding='utf-8')
        t = f.read()
        f.close()
        ls = jieba.lcut(t)
        txt = ' '.join(ls)
        w = wordcloud.WordCloud(font_path = 'c:\windows\Fonts\STZHONGS.TTF',width = 1000,height = 700,background_color = 'white')
        w.generate(txt)
        w.to_file('novelWordcloud.png')

二.jieba库

作用:将句子分解为词语
三种模式
jieba.lcut(s)#(精确模式:把文本精确的切分开,不存在冗余单词)
#返回的是
#['中国','是','一个','国家']
jieba.lcut(s,cut_all = True)#(全模式)
#['中国', '国是', '一个', '国家']即按照均等形式进行分解,返回的是均等的参数状况类
jieba.lcut_for_search(s)
#即在jieba.lcut(s)切割的情况下,在进行一次切割

三.正则表达式库re

两个匹配命令
(两个语句常常结合一起使用)

  1. re.findall(p,html),匹配出需要的字符串
  2. re.compile()
    作用返回的是一个匹配对象(即匹配对象需要代结合匹配字符串思路类使用状况)
  3. 内容匹配规则类r’内容
#匹配图片类
r'<img class="BDE_Image" src="([^"]+\.jpg)"'  #即典型class名称与网页中的名称相关的特点
#图片匹配法类
  reg = r'src="(.+?\.jpg)" pic_ext'#另外一种匹配方式
  imgre = re.compile(reg)
  imglist = imgre.findall(html)#表示在整个网页中过滤出所有图片的地址,放在imglist中
#匹配小说类
r'<div style="clear:both;"></div>([\s\S]*) <div id="favoriteshow_3" style="display:none" align="center"></div>'

#特殊匹配变量类
re.I(re.IGNORECASE): 忽略大小写
re.M(MULTILINE): 多行模式,改变’^’和’$’的行为
re.S(DOTALL): 点任意匹配模式,改变’.’的行为
re.L(LOCALE): 使预定字符类 \w \W \b \B \s \S 取决于当前区域设定
re.U(UNICODE): 使预定字符类 \w \W \b \B \s \S \d \D 取决于unicode定义的字符属性
re.X(VERBOSE): 详细模式。这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释
#如两个匹配规则使用例子
x=re.compile(r'(http://video.*?mp4.*?mp4)',re.S)  
re.findall(匹配规则,x)#属于BeautifulSoup中的参数状况特点

在这里插入图片描述

四.请求库requests

①请求类
requests.get()//get请求形式
且注意对应请求类,需要获取请求的什么数据即代加该参数即可(即理解为response的控制理解)
requests.post()//post请求方式类
拥有data数据的post

r1 = requests.post(“http://httpbin.org/post”, data=payload)
定制请求头形式的爬虫
headers = {
#定制请求头中的User-Agent参数,当然也可以定制请求头中其他的参数
‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36’,
}
response = requests.get(url=url,headers=headers)

②响应类

#获取请求的url print(‘请求的url:’+response.url)
#获取响应状态码 print(response.status_code)
#获取响应内容的编码格式,可以通过该属性修改响应的编码格式,直接以赋值的形式就可以修改响应的编码方式,一般出现乱码是我们需要进行设置
print(‘响应内容编码:’+response.encoding)
#获取响应对象的响应头信息:
print(response.headers)
#获取字符串形式的响应内容,即是我们通过审查元素看到的HTML内容
print(response.text)
#获取字节形式的响应内容,是bytes类型,一般我们请求图频、音频、视频需要用到字节流形式的响应内容
print(response.content)

③写入文件类

写文字类文件且保存
  #将响应的内容写到我们指定的文件中
with open(’./baidu.html’,‘w’) as fp:
fp.write(page_data)
写图片类文件
#获取响应的网页内容(该内容为图片,应该获取二进制类型数据)
image_data = response.content

五.urrlib库

典型使用的语句
下载文件命令

urllib.request.urlretrieve()#直接将远程数据下载到本地 下载文件参数的方法思路
#例子
urllib.request.urlretrieve(each,filename,None)

六.os库

典型使用命令
os.getcwd()获得当前的路径
os.path.exists()判断文件是否存在的命令
os.makedirs()建立文件夹命令
os.listdir(path)目录列出命令

典型使用

if os.path.exists(folder_path) == False:#判断文件夹是否存在的命令
   os.makedirs(folder_path)#创建文件夹的命令

在这里插入图片描述

七.解析网页库xpath与BeautifulSoup

BeautifulSoup()
使用方法

BeautifulSoup(response.content, 'html.parser')
 #即利用html.parser这个解析器进行解析response.content内容

xpath
(典型导入与使用方法类,注意xpath在浏览器中copy位置的方法思路)

from lxml import html
etree = html.etree#即网页树的意思
#解析数据的方法
data = requests.get(url=url,headers=headers).text
s=etree.HTML(data)#即利用其进行解析网页,解析这个网页传过来的data数据
打印数据
即读取xpath数据的方法
x.path('xpath的路径')

八.获取图片BytesIO+PIL库

介绍
PIL库:图片处理的常见模块基本都具备与包含
典型使用:Image模块

常用
Image.open()#文件加载图像
Image.save()#保存图片文件
不常用
Im.format#图片格式(如jpg,jpeg类)信息
 print(Im.format)
im.mode#图片画质信息            
 print(im.mode)
im.size #图片尺寸信息
print(im.size)
im.convert(mode,matrix) #将一个“RGB”图像转换为“L”或者“RGB”图像
new_im = im.convert("L", rgb2xyz)

BytesIO
作用:操作二进制数据的作用
原因:对于f.write而言只可写字符串数据,因此对于进制数据类,就需要代利用byteslO进行转换后写入
联合使用例子

img_name = folder_path + str(index+1) + '.png' #注释1
image =Image.open(BytesIO(html.content)) #利用bytesIO获取图片
image.save('路径'+img_name)#利用pil里面的image模块对图像进行控制类

九.time库

典型使用命令

time.sleep(1)#延时语句类
#返回时间的两个命令
time.time()
time.colock()

猜你喜欢

转载自blog.csdn.net/qq_33942040/article/details/108391749