初学python爬虫,记录一下学习过程,requests xpath 提取图片并保存02

紧接上一次的首页图片保存,这篇是提取详情页的图片并保存,且第一页的地址又与以后的地址不一样,需要单独处理。

'''
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()








发布了18 篇原创文章 · 获赞 14 · 访问量 1293

猜你喜欢

转载自blog.csdn.net/qq_46292926/article/details/104575214