当前位置:   article > 正文

python爬图片 beautifulsoup_【python小练】图片爬虫之BeautifulSoup4

python beautifulsoup4 爬图片

Python3用不了Scrapy!

Python3用不了Scrapy!

Python3用不了Scrapy!

[重要的事情说三遍,据说大神们还在尝试把scrapy移植到python3,特么浪费我半个小时pip scrapy = - =]

【更新:py3现在可以用scrapy了,感谢大神们=w=】

先前用正则表达式匹配出符合要求的标签真的超麻烦的,正则式错一点点都要完蛋,用bs4感觉方便很多。

bs4是将整个html拆解成字典和数组,所以处理起来比较简单。

要下载我想要的图片,最终目标是图片的url数据。

先看页面源码:

1. 读取页面代码:

html_doc = urllib.request.urlopen(url + "#!s-p" + str(n+x-1)).read().decode('utf-8')

soup= BeautifulSoup(html_doc, "lxml")

2. 见上图,我想下载的图片都包含在符合【属于class="a"的标签】这个特点的标签下,用bs4找出这些标签,用下面这句代码:

soup.find_all('a', class_='a')#soup.find_all('(标签名)',(符合属性))

3. 从中找出图片标签,并获取链接地址url到img_src:

for myimg in soup.find_all('a', class_='a'):

img_src= myimg.find('img').get('src')

从第二步来看确实是比纯粹用正则表达式省时省力。

完整代码如下,其实也只改了正则那一小部分:

from bs4 importBeautifulSoupimporturllib.requestimportosdefdownlaodimg(url,m,n):

os.chdir(os.path.join(os.getcwd(),'photos'))

t= 1 #记录图片张数

for x in range(n-m+1):

html_doc= urllib.request.urlopen(url + "#!s-p" + str(n+x-1)).read().decode('utf-8')

soup= BeautifulSoup(html_doc, "lxml")for myimg in soup.find_all('a', class_='a'):

pic_name= str(t) + '.jpg'img_src= myimg.find('img').get('src')

urllib.request.urlretrieve(img_src, pic_name)print("Success!" +img_src)

t+= 1

print("Next page!")

downlaodimg("http://www.duitang.com/search/?kw=%E6%96%87%E8%B1%AA%E9%87%8E%E7%8A%AC&type=feed",1,3)

和前一篇一样添加了起始页和终止页两个参数。

下载后文件夹:

ps:太宰桑真是太萌辣(●'◡'●)ノ♥不说了再去看一遍~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/140397
推荐阅读
相关标签
  

闽ICP备14008679号