P205-下载xkcd漫画

先上代码

import requests,os,bs4

url='https://xkcd.com/'
# print(os.getcwd())
if not os.path.exists('xkcd'):  # 创建存图片的路径
    os.mkdir('xkcd')

while not url.endswith('#'):  # 观察发现网站第一张图的Prev按钮链接是#
    # 1-下载网页
    print('downloading page %s...',url)
    res=requests.get(url)
    res.raise_for_status()
    soup=bs4.BeautifulSoup(res.text, "html.parser")
    # 2-解析,找出图片url
    comicElem=soup.select('div #comic img')  # 这个要观察页面
    if comicElem==[]:
        print('cound not find comic image.')
    else:
        comicUrl=comicElem[0].get('src')
        print('downloading page %s...',comicUrl)
        res=requests.get('https://xkcd.com/'+comicUrl)  # 图片的存储地址
        res.raise_for_status()

    # 3-下载图片
        imageFile=open(os.path.join('xkcd',os.path.basename(comicUrl)),'wb')  # 拿到图片名称并写入设定路径
        for chunk in res.iter_content(100000):
            imageFile.write(chunk)
        imageFile.close()

    # 4-得到Prev按钮的url
        prevLink=soup.select('a[rel="prev"]')[0]
        url='https://xkcd.com/'+prevLink.get('href')

print('Done.')

运行情况:运行了一会儿我主动中断了,没必要爬那么多。。

下载的图片:

 

PS:

1. 关于iter_content()的使用,可参考  https://blog.csdn.net/weixin_41848989/article/details/88554700

2. soup.select('div #comic img')  这个函数的结果是list,使用要注意

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值