两个匹配命令 (两个语句常常结合一起使用)
re.findall(p,html),匹配出需要的字符串re.compile() 作用返回的是一个匹配对象(即匹配对象需要代结合匹配字符串思路类使用状况)内容匹配规则类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.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
典型使用的语句 下载文件命令
urllib.request.urlretrieve()#直接将远程数据下载到本地 下载文件参数的方法思路 #例子 urllib.request.urlretrieve(each,filename,None)典型使用命令 os.getcwd()获得当前的路径 os.path.exists()判断文件是否存在的命令 os.makedirs()建立文件夹命令 os.listdir(path)目录列出命令
典型使用
if os.path.exists(folder_path) == False:#判断文件夹是否存在的命令 os.makedirs(folder_path)#创建文件夹的命令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的路径')介绍 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.sleep(1)#延时语句类 #返回时间的两个命令 time.time() time.colock()