#解析下载图片数据
import requests
from lxml import etree
import os
from bs4 import BeautifulSoup
if __name__=="__main__":
url='https://pic.netbian.com/index_2.html'
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36 Edg/94.0.992.50'}
response=requests.get(url=url,headers=headers)
# response.encoding = 'utf-8'########手动设定响应数据的编码格式,如果这种设定解决不了乱码问题呢?
page_text=response.text
# #开始解析数据
# # 首先实例化一个etree对象
tree=etree.HTML(page_text)#对象解析好了,并且也将即将被解析的源码数据加载到该对象当中了,下一步就是要解析了
# #解析属性值试试。。
li_list=tree.xpath('//div[@class="slist"]/ul/li')
if not os.path.exists('./picLibs'):
os.mkdir('./picLibs')
for li in li_list:
# img_src=li.xpath('./a/span/img/@src')[0]#列表当中只有一个元素,因为我们定义到的img只有一个#################################################第一页
img_src ="https://pic.netbian.com/"+li.xpath('./a/img/@src')[0] # 列表当中只有一个元素,因为我们定义到的img只有一个
# img_name=li.xpath('./a/b/text()')[0]
# img_name=li.xpath('./a/@title')[0]#加上图片后缀########################################################################################第一页
img_name = li.xpath('./a/img/@alt')[0] # 加上图片后缀
img_name=img_name.encode('iso-8859-1').decode('gbk')##将img-name单独encode成iso的编码,也可以将整体设定成这个;;就这两种方法随意试,哪种好用用哪个
img_data = requests.get(url=img_src, headers=headers).content
img_path = 'picLibs/' + img_name
with open(img_path, 'wb') as fp: #文件需要打开多次,每打开一次就要需要往文件夹里写入图片一次,循环外部创建一个文件夹:
fp.write(img_data)
print(img_name, "下载成功!")
print(img_name,img_src)
print()
# soup = BeautifulSoup(p+age_text, 'lxml') #用一个解析方法,拿到数据!!!
# print(soup.select('div>a')[1].text)