• python第一个项目:爬取一个网站的所有图片


    目的:爬取一个网站的所有图片
    调用库:requests库,BeautifulSoup库
    程序设计:
    1.函数getHTML():用于获取url的html文本
    代码如下

    def getHTML(url):
        try:
            r=requests.get(url,headers={'user-agent':'Mozilla/5.0'})
            r.raise_for_status()
            r.encoding=r.apparent_encoding
            return r.text
        except:
            print('Fail')
    

    该函数的注意事项是记得利用try except 的处理异常操作的方法来返回一个r.text
    2.函数geturl():用于获得图片格式的url,在此处调用BeautifulSoup库
    代码如下

    def geturl(html,ulist):
        soup=BeautifulSoup(html,'html.parser')
        alist=soup.find_all('img')
        for i in range(len(alist)):
            ulist.append(alist[i].attrs['src'])
        print(ulist)
    

    该段函数的注意事项是利用soup的find_all()方法来返回一个包含图片链接的所有标签列表,值得注意的是返回的这个列表的每个元素都是BF库解析过的html文件,所以不需要再次调用BF函数解析,我自己调了好久才发现》》》,最后将列表每个标签元素的attrs[’src‘]添加到ulist这个结果列表中
    3.函数download(),再次利用requests库的get方法,以及os库来保存文件
    代码如下

    def download(url):
        root='D:/pics/'
        path=root+url.split("/")[-1]
        print(path)
        try:
            if not os.path.exists(root):    
                os.mkdir(root)
            if not os.path.exists(path):            
                r=requests.get(url)
                r.raise_for_status()
                with open(path,'wb') as k:
                    k.write(r.content)
                    k.close()
                    print("文件保存成功")
            else:
                print("文件已存在")
        except:
            print("失败")
    

    该段函数的注意事项是1.在这段函数中对程序进行了兼容性优化,那就是调用了os库来检查该电脑有没有root这个根目录,如果没有就利用os.mkdir()方法创建这个root目录,再将图片文件写入
    4.最后使用一个主函数main()来调用以上三个函数来达到目的的实现
    代码如下

    def main():
        ulist=[]
        url=str(input('输入网址'))
        html=getHTML(url)
        geturl(html,ulist)
        for k in ulist:
            download(k)
            print('finish')
    

    该段代码的注意事项是注意到用一个for循环来调用download函数从而写入所有图片文件,在这里我遇到一点小麻烦,一开始我是直接将for循环加到download函数中,但是运行就会一直报错,这里我还没有想通第一次方法为什么不可行

    这个程序对于部分网址无法进行有效的爬取,这个坑可以以后学了更深的爬虫知识再来解决。

  • 相关阅读:
    Ubuntu Windows双系统时差8小时问题解决
    linux无线网络配置
    Ubuntu 10.04上腾达W541U V2.0 无线网卡驱动的使用
    有些歌,放在这慢慢听
    [推荐]什么是程序员的优秀品质?
    如何阅读源代码
    Ubuntu中的有线、无线网络连接管理器──Wicd[译]
    linux下无线网卡解决方案之Ndiswrapper终极使用指南
    将jar文件做成exe可运行文件
    WOW裁缝1375详细攻略
  • 原文地址:https://www.cnblogs.com/yfc0818/p/11072698.html
Copyright © 2020-2023  润新知