beautifulsoup的find_all用法,爬取斗图网图片

弄不清楚findAll和find_all的区别。

几点收获
  • 使用 find_all取获取目标链接
  • 使用urllib库下载图片,貌似更简便
  • 获取图片链接地址时要注意,后面一个图片往往是未加载完成时显示的“正在加载”的图片,要注意区分
  • 爬回的链接中有个把不符合条件,截取链接最后几个字符 用 in 判断是否是jpg或gif,不是就直接pass
  • 其他方面没有难度
  • 下次多选取页码范围,下载图片的时候可以用多线程。
import requests
from urllib import request
from bs4 import BeautifulSoup
#构建目标网站链接
urls=["http://www.doutula.com/photo/list/?page={}".format(str(i)) for i in range(1,3)]
def get_srcs(url):   #获取图片链接
    src=[]
    html=requests.get(url)
    soup=BeautifulSoup(html.text,'lxml')
#以下为最关键一句
    srcs=soup.find_all('img',attrs={'class':'img-responsive lazy image_dta'})
    for i in srcs:
        src.append(i['data-original'])  #返回数组,想用yield,但是没弄明白。
    return src

def down_pic(src):   #下载图片
    root='d:/py/spider/doutuphoto/'
    if src[-3:] in ['jpg','gif']:
        request.urlretrieve(src,filename=root+src.split('/')[-1])
    else:
        pass

def main():
    for url in urls:
        for i in get_srcs(url):   #此处可加多线程
            down_pic(i)
            print (i)
if __name__=='__main__':
    main()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,977评论 25 708
  • 在中国,婆媳关系永远是家庭关系中不可忽略的一部分。 在二十世纪早期,中低层家庭都还是兄弟姐妹不分家,一大家子人一起...
    echo_辛阅读 194评论 1 1
  • 猪肝瘦肉粥 补锌补血,将猪肝冲洗后放在盆里浸泡1小时,直到除尽残血,中途最好换水,这样可以去掉猪肝中残留的毒素。 ...
    大果果ly阅读 181评论 0 0