• 糗事百科图片爬取


    import requests
    import re
    import os
    
    
    url = 'https://www.qiushibaike.com/imgrank/page/%d/' # 用python的%d代表数字 又忘记加/左斜杠
    for pageNum in range(1,11): # 大的for循环,遍历到最后页面执行退出,之后的语句都在这个循环下
        new_url = format(url % pageNum) # 可以这样格式化字符串啊
    # print(new_url)
        headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'}
    
        page_text = requests.get(url=new_url,headers=headers).text
        ex = '<div class="thumb">.*?<img src="(.*?)" alt=.*?</div>'
        img_list = re.findall(ex, page_text, re.S) # re.S可处理匹配到换行的字符串
    
        if not os.path.exists('./qiushi'):
            os.mkdir('./qiushi')
        for img in img_list:
            img_url = 'https:' + img
            print(img_url)
            img_name = img.split('/')[-1]
            img_data = requests.get(url=img_url,headers=headers).content
            img_path = './qiushi/' + img_name # +号就可以变成这种形式:./qiushi/img_name 可以自己加个/ 我傻了 没加/导致无法写入图片
            with open(img_path,'ab+') as f: # 这里为啥写不进去文件啊  img_path = './qiushi' + img_name  我这里少加了个/
                f.write(img_data)
            print(img_name,'下载成功')
    
    
    

    感想

    整个爬取正则表达式唯一的精髓就在于该正则表达式

    ex = '<div class="thumb">.*?<img src="(.*?)" alt=.*?</div>'
    

    该正则匹配后的列表形式['',]
    这个正则我没懂他是如何提取到该页面的url的

    ex = '<div class="thumb">.*?<img src="(.*?)" alt=(.*?)</div>'
    

    加上了括号就变成了元组在列表中的类型了,[(),]

    努力拼搏吧,不要害怕,不要去规划,不要迷茫。但你一定要在路上一直的走下去,尽管可能停滞不前,但也要走。
  • 相关阅读:
    java架构师学习目录 sany
    python学习字符串 sany
    python中os.open()和open()区别 sany
    python3学习列表 sany
    C语言博客园作业03
    c语言博客作业02
    程序员竞争力列表
    《程序员》三月刊摘要
    Storage Systems IMPACT 课程结束
    deployJava.js的一个缺憾:无法正确检测客户端JRE
  • 原文地址:https://www.cnblogs.com/wkhzwmr/p/14842827.html
Copyright © 2020-2023  润新知