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文件夹

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

  • 爬取的图片
    在这里插入图片描述
原文地址:https://www.cnblogs.com/l0nmar/p/12553858.html