紧接上一次的首页图片保存,这篇是提取详情页的图片并保存,且第一页的地址又与以后的地址不一样,需要单独处理。
'''
requests库请求目标网址
xpath提取网页的图片地址
面向函数编程
提取首页与以面网页不一样的图片
'''
#导入第三方库
import requests
from lxml import etree
import time
#useragent库
from fake_useragent import UserAgent
#定义随机的UserAgent
ua = UserAgent()
headers = {'User-Agent':ua.random}
#定义得到html文本的函数
def get_html(url):
time.sleep(1)
#如果用.text()则出现乱码的情况,所以采用utf-8方式解码
html = requests.get(url,headers = headers).content.decode('utf-8')
return html
#定义解析html的函数
def paser_html(html):
#新建空列表
images_url = []
e = etree.HTML(html)
#提取图片地址
image_urls = e.xpath('//div[@class="img_box"]/a/img/@src')
#遍历循环地址并添加到空列表中
for image_list in image_urls:
images_url.append(image_list)
return images_url
#定义保存图片的函数
def save_data(images_url):
for image in images_url:
#请求每一个图片的地址
r = requests.get(image,headers = headers)
time.sleep(1)
#图片的名字
file_name = image.split('/')[-1]
#保存图片
with open(file_name,'wb') as f:
f.write(r.content)
#定义主函数
def main():
#第一页的url不一样需要单独处理
for page in range(70):
if page == 1:
url = 'https://www.yeitu.com/meinv/xinggan/20200228_18602.html'
html = get_html(url)
images_url = paser_html(html)
save_data(images_url)
else:
url = 'https://www.yeitu.com/meinv/xinggan/20200228_18602_%d.html'%page
html = get_html(url)
images_url = paser_html(html)
save_data(images_url)
main()