关于初学python的一点问题总结(二)

关于初学python的一点问题总结(二)

目录

总结

今天爬取的页面不是昨天的百度百科,今天尝试对漫画网站的图片进行抓取,在钢之炼金术师 这本漫画的第一话尝试进行抓取。

步骤

首先是分析页面的元素块,在页面中,发现所看的漫画的图片元素都是img标签,并且其中都含有id=mhpic 这下子就很好办了。跳转到img 标签里面的src属性所指向的URL可以发现的确是我们需要的图片。
先尝试抓取一个页面的图片的URL。具体代码如下:

def getimgurl(url):
    html=urlopen(url)
    bsObj=BeautifulSoup(html.read(),"html.parser")
    imgs= bsObj.findAll('img',id="mhpic")
    for img in imgs:
        print("getImgURL: "+img['src'])
        return img['src']

在拿到图片的URL之后,如何下载到本地呢,查了一下其他相关博客,发现在库里面有一个很关键的方法:

urllib.request.urlretrieve(imgurl,'%s.jpg' % i)

简直完美!
这下子图片就下载到本地了,存储路径可以自己写,具体参考urlretrieve() 方法,这里就不做说明。

抓一话来试试

获取和下载图片没问题了之后,就开始找<a>标签,准备开始跳转了。
参考页面发现“下一页”也有一个特殊的id=mhona,然而整个页面中,除了”下一页”,“上一页”也有这个id, 这个时候,通过一点小技巧来获取“下一页”,代码如下:

def nextpage(url):
    html=urlopen(url)
    bsObj=BeautifulSoup(html.read(),"html.parser")
    anexts=bsObj.findAll('a',id="mhona")
    print(url)
    for anext in anexts:
        if(anext.get_text()=="下一页"):
            print("nextPage: "+anext.attrs['href'])
            return "http://manhua.fzdm.com/17/001/"+anext.attrs['href']

由于这个只是针对第一话的图片的测试,所以并没有返回自动填充的url,只能抓取第一话的图片内容。(其实通过分析也可以看出来,/17就指的是这部漫画,/001是第一话,后面可以修改源码然后对整个网站进行漫画抓取)

一点小小的问题

  • 这是python3的代码
  • 这个demo只能针对很小的一块,要爬取一部漫画需要进行改进代码
  • 抓取的最后,页面无法获取到“下一页”时候会报错,加一个try来抛出异常就可以解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值