滑稽仔 2017-06-03 15:52 采纳率: 0%
浏览 2188

怎么实现一个页面爬取多张图片?

假设这是我爬取的页面:http://www.rosiyy.com/xiaoyan/rosi1559.html
图片说明图片说明
但是要爬取的页面有多个图片,求大神有什么思路?图片说明

以下是我的全部代码

 # coding:utf-8
import requests
from lxml import html
import os
import time
import sys

reload(sys)
sys.setdefaultencoding('utf-8')

def getPage(pageNum):
    baseUrl = 'http://www.rosiyy.com/tag/%E8%82%89%E4%B8%9D-5.html'.format(pageNum)
    selector = html.fromstring(requests.get(baseUrl).content)
    urls = []
    for i in selector.xpath('//div[@class="photo"]/a/@href'):
        urls.append(i)
    return urls

def getPiclink(url):
    sel = html.fromstring(requests.get(url).content)
    total = sel.xpath('//div[@class="archives_page_bar"]/a[last()-1]/text()')[0]
    title = sel.xpath('//h2/text()')[0]
    jpgList = []
    for i in range(int(total)):
        link = '{}/{}'.format(url,i+1)
        s = html.fromstring(requests.get(link).content)
        jpg = s.xpath('//div[@class="post postimg"]/p/a/img/@src')[0]
        jpgList.append(jpg)
    return title, jpgList

def downloadPic((title, piclist)):
    k = 1
    count = len(piclist)
    dirName = u"【%sP】 %s" %(str(count), title)
    os.mkdir(dirName)
    for i in piclist:
        filename = '%s/%s/%s.jpg' %(os.path.abspath('.'), dirName, k)
        print u'Download:%s 第%s张' %(dirName, k)
        with open(filename, "wb") as jpg: 
            jpg.write(requests.get(i).content)
            time.sleep(0.5)
        k += 1


if __name__ == '__main__':   
    pageNum = input(u'page:')
    for link in getPage(pageNum):
        downloadPic(getPiclink(link))
  • 写回答

1条回答 默认 最新

  • threenewbee 2017-06-03 15:57
    关注
    评论

报告相同问题?

悬赏问题

  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备