zoukankan      html  css  js  c++  java
  • python爬虫+正则表达式实例爬取豆瓣Top250的图片

    • 直接上全部代码
      新手上路代码风格可能不太好
    import requests
    import re
    from fake_useragent import UserAgent  #### 用来伪造爬头部信息
    
    ua = UserAgent()
    kv = {'user-agent': ua.random}
    url = 'https://movie.douban.com/top250?start=0&filter='
    
    index = 0  ####标记爬取图片的数量与命名
    
    for i in range(0, 10):
        sum_page = i*25
        new_url = re.sub('start=d+', 'start=%d'%sum_page, url, re.S)
        r = requests.get(new_url, headers=kv)
        r.encoding = 'utf-8'
        text = r.text
        #### 以上是一个分页爬取的操作 ####
    
        pictures_part = re.findall('<div class="pic">(.*?)</div>', text, re.S)
        for picture in pictures_part:
            img = re.findall('src="(.*?)" class', picture, re.S)
            pic = requests.get(img[0], headers=kv)
            fp = open('imgs\' + str(index) + '.jpg', 'wb')  ####这里选用wb以二进制形式写入文件
            fp.write(pic.content)
            fp.close()
            print('picture' + str(index) + ' has been dawnload')
            index += 1
    

    代码部分的解释

    1. 需要对爬虫的请求头部加以修改,引入fake_useragent库来进行轻微的伪造
    2. 利用了index在标记爬取图片数量的同时方便为爬取的图片命名
    3. 关于re库中的sub翻页,利用sub方法进行分页爬取
    4. 图片保存要以二进制形式写入
    5. 需要提前在和代码同目录下创建imgs文件夹

    • 爬取时不无聊加了这个东西
      在这里插入图片描述

    • 爬取的图片
      在这里插入图片描述
  • 相关阅读:
    mysql 数据库字符集问题
    适配器模式
    thinkphp学习笔记
    StarDict
    dereferencing pointer to incomplete type
    转载的一篇 关于git的
    策略模式
    让你的Ubuntu看的更顺眼些
    vim 配置
    .NET WEB SERVICE 学习记录
  • 原文地址:https://www.cnblogs.com/l0nmar/p/12553858.html
Copyright © 2011-2022 走看看