鱼C论坛

 找回密码
 立即注册
查看: 2189|回复: 7

[已解决]各位大神 帮助我一下

[复制链接]
发表于 2017-4-8 22:10:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我看完小甲鱼的正则表达式 还有批量下载OOXX图片后,我自己写了一个类似的(想独立做一个试试 别笑我)
但问题是 假设2424页里面不止1个图片 而是5个图片,我这样写就只能获取到一个图片,请问 我的程序 应该怎么改呢?
----------------------------我是淫荡的分割线---------------------------------------------------------------------------------------
import urllib.request
import re

imggroup=[]

#用于获取最新的图片号码
def getmaxnum(url):
    req=urllib.request.urlopen(url)

    html=req.read().decode('utf-8')

    num=re.search(r'class="current-comment-page"(.{7})',html)

    maxnum=int(num.group(0)[30:34])

    return maxnum


#用于获取图片地址,并加入到序列中
def down_mm(url):
    req=urllib.request.urlopen(url)

    html=req.read().decode('utf-8')

    img_adds=re.search(r'<img src="(.+)\.jpg',html)

    img_adds=str(img_adds.group(0)[12:])

    return img_adds

#主程序
def download_main():
    url='http://jandan.net/ooxx'

    maxnum=getmaxnum(url)

    num=maxnum-5

    while maxnum > num:   

        url='http://jandan.net/ooxx/page-'+str(maxnum)+'#comments'

        img_adds=down_mm(url)

        imggroup.append(img_adds)

        maxnum-=1
    for i in imggroup:
        reqr=urllib.request.urlopen('http://'+i)
        htmlr=reqr.read()
        #print (i)
        f=open(str(i[40:]),'wb')
        f.write(htmlr)
        f.close
   

if __name__=='__main__':
    download_main()
最佳答案
2017-4-8 22:24:13
本帖最后由 Aifrincoo 于 2017-4-8 23:16 编辑

你那个def down_mm(url):每个页面就返回了一个图片链接

img_adds=re.search(r'<img src="(.+)\.jpg',html)    找出第一张图片的链接


最后return 得到的也就是当前页面的一条图片链接
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-4-8 22:24:13 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Aifrincoo 于 2017-4-8 23:16 编辑

你那个def down_mm(url):每个页面就返回了一个图片链接

img_adds=re.search(r'<img src="(.+)\.jpg',html)    找出第一张图片的链接


最后return 得到的也就是当前页面的一条图片链接
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-8 22:30:36 | 显示全部楼层
那我应该怎么改呢?不好意思 在下比较笨
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-8 22:51:54 | 显示全部楼层
本帖最后由 Aifrincoo 于 2017-4-8 22:58 编辑

弄错了

我看你的看得有点晕,可能还是不行。我这边没时间要断网了,我自己学得好差。见谅
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-8 22:58:45 | 显示全部楼层
本帖最后由 Aifrincoo 于 2017-4-8 23:21 编辑

match()        判断一个正则表达式是否从开始处匹配一个字符串
search()        遍历字符串,找到正则表达式匹配的第一个位置
findall()        遍历字符串,找到正则表达式匹配的所有位置,并以列表的形式返回
findall可以找到所有的链接
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-8 23:02:37 | 显示全部楼层
谢谢 我更差
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-8 23:23:28 From FishC Mobile | 显示全部楼层
诶,我弄这些东东也要弄老半天,归根结底还是基础没打好。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-10 14:12:36 | 显示全部楼层
谢谢你 用findall是可以找到全部 放在一个序列里 谢谢你 小的给你跪了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-26 19:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表