python数据解析
聚焦爬虫:爬取页面中指定的页面内容
编码流程:
指定url
发起请求
获取响应数据
数据解析
持久化存储
数据解析分类
正则
bs4
xpath(***)通用性强
数据解析原理概述:
解析的局部的文本内容都会在标签之间或者标签对应的属性中进行存储
进行指定标签定位
标签或者标签对应的属性中存储的数据值进行提取(解析)
#如何爬取图片数据
import requests,json
if __name__=="__main__":
# UA伪装:将对应的User-Agent封装到一个字典中
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36'}
#指定url
url = 'https://tiebapic.baidu.com/forum/w%3D580%3B/sign=2d30adc5606d55fbc5c6762e5d194e4a/37d3d539b6003af331201d7b682ac65c1038b617.jpg?tbpicau=2022-03-13-20_8fdd1b7d64fdaaab9991b1420a3c3516'#找到网站上图片,右键复制图片地址
#发起请求,get方法会返回一个响应对象
#content返回的是二进制形式的图片数据
#text字符串 content二进制 json()对象
img_date=requests.get(url=url).content
#持久化存储
with open('./tupain.jpg','wb') as fp:##wb:以二进制格式打开一个文件,只用于写入。如果该文件已存在则打开文件, #并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
fp.write(img_date)
import requests, json,re,os
if __name__ == "__main__":
#创建一个文件夹,保存所有图片
if not os.path.exists('./tupianlibs'):
os.mkdir('./tupianlibs')
# UA伪装:将对应的User-Agent封装到一个字典中
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36 Edg/99.0.1150.39'}
# 设定一个通用url模板
url = 'https://tieba.baidu.com/p/7729827024?pn=%d' # 找到网站上图片,右键复制图片地址
for pagenum in range(1,4):
#对应页码的url‘
newurl=format(url%pagenum)
#使用通用爬虫对url对应的一整张页面进行爬取
page_text = requests.get(url=newurl,headers=headers).text
print(page_text)
#使用聚焦爬虫将页面中图片进行解析/提取
ex=r'src="(.*?)\?tbpicau=2022-03-14-16.*?size=.*?></div>'
img_src_list=re.findall(ex,page_text,re.M)#此处正则表达式错误,在测试网站上只是略有瑕疵,本来准备队得到的内容在正则一次,但移植到python上就不行了
print(img_src_list)
for src in img_src_list:#假设此处有一个由网址组成的列表
img_date= requests.get(url=src,headers=headers).content
# 发起请求,get方法会返回一个响应对象
# content返回的是二进制形式的图片数据
# text字符串 content二进制 json()对象
# 持久化存储
#生成图片名称
img_name=src.split('/')[-1]
imgPath='./tupianlibs/'+img_name#图片存储的路径
with open(imgPath,'wb') as fp:
fp.write(img_date)
print(img_name,'爬取成功')