您的位置:首页 > 编程语言 > Python开发

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

2017-03-16 21:57 295 查看

关于初学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来抛出异常就可以解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python