聚焦爬虫:爬取页面中指定的页面内容。
---编码流程:指定Url;发起请求;获取响应数据;数据解析;持久化存储;
数据解析分类:正则;bs4;xpath;
数据解析原理概述:
解析的局部文本内容都会在标签之间或者标签对应属性中进行存储
-
进行指定标签的定位
-
标签或者标签对应的属性中存储的数据值进行提取(解析)
1.1正则解析
#需求:爬取图片
import requests
if __name__ == '__main__':
#如何爬取图片数据
url='你想要爬取网页的url'
#content返回的是二进制形式的图片数据
#text(字符串) content(二进制) json() (对象)
img_data=requests.get(url=url).content
with open('./xx.jpg','wb') as fp:
fp.write(img_data)
#需求:糗事百科爬取某个板块下所有的图片
import requests
import re
import os
if __name__ == '__main__':
#创建一个文件夹,保存所有图片
if not os.path.exists('./xxx')
os.mkdir('./xxx')
url='xxxx'
headers={
'User-Agent':xxx
}
#使用通用爬虫对url对应的一整张页面进行爬取
page_text=requests.get(url=url,headers=headers).text
#使用聚焦爬虫将页面中所有糗事图片进行解析/提取
ex='<div class="thumb">.*?<img= src="(.*?)" alt.*?</div>'
img_src_list=re.findall(ex,page_text,re.S)
for src in img_src_list:
#拼接出完整的图片url
src ='https:'+src
#请求到了图片的二进制数据
img_data=requests.get(url=src,headers=headers).content
#生成图片名称
img_name=src.split('/')[-1]
#图片存储的路径
img_Path='./xxx/'+img_name
with open(img_Path,'wb') as fp:
fp.write(img_data)
print(img_name,'下载成功!!!')
#可以直接爬取下一页的内容
import requests
import re
import os
if __name__ == '__main__':
headers={
'User-Agent':xxx
}
#创建一个文件夹,保存所有图片
if not os.path.exists('./xxx')
os.mkdir('./xxx'