首页
登录 | 注册

python 抓取糗事百科糗图

1 首先看下要抓取的页面

python 抓取糗事百科糗图

这是糗事百科里面的糗图页面,每一页里面有很多的图片,我们要做的就是把这些图片抓取下来。

2 分析网页源代码

python 抓取糗事百科糗图

发现源代码里面的每张图是这样储存的,所以决定使用正则匹配出图片的url,然后下载下来。

3 编写程序

import requests
import re
import os

def main():
    url = 'https://www.qiushibaike.com/pic/page/{}/'
    ua_headers = { "User-Agent":'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)'}
    # 指定其实页码和结束页码
    page_start = int(input('请输入开始页面:'))
    page_end = int(input('请输入结束页面:'))
    # 找文件夹,如果没有则创建一个
    if not os.path.exists('Images'):
        os.mkdir('Images')
    # 循环下载
    for page in range(page_start, page_end+1):
        print('正在下载第%d页图片...'%page)
        new_url = url.format(page)
        responses = requests.get(url=new_url, headers=ua_headers)
        if responses.status_code == 200:
            res = responses.text
        else:
            print('页面没有响应')
        pattern = re.compile('''<div class="thumb">.*?<img src="(.*?)".*?>.*?</div>''', re.S)
        items = re.findall(pattern, res)for item in items:
            url_image = 'https:' + item
            name_image = item.split('/')[-1]
            image_path = 'Images/' + name_image
            image_data = requests.get(url=url_image, headers=ua_headers).content
            with open(image_path, 'wb') as f:
                f.write(image_data)

if __name__ == '__main__':
    main()

3 查看爬取到的图片

python 抓取糗事百科糗图

一个很简单的小程序。


相关文章

  • 定义函数时,默认参数必须指向不变的对象 参数为可变对象时,正常调用的时候,结果没有问题,但是当使用默认参数的时候,结果就会和理想的有差距. In [78]: def add(L=[]): ...: L.append('END') ...: ...
  • 如何零基础开始自学Python编程
    转载——原作者:赛门喵 链接:https://www.zhihu.com/question/29138020/answer/141170242 0. 明确目标 我是真正零基础开始学Python的,从一开始的一窍不通,到3个月后成功搭建了一个 ...
  • Python是什么? Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. Python是纯粹的自由软件, 源代码和解释器CPython遵循 G ...
  • 计算机基础 01 计算机基础之编程 02 计算机组成原理 03 计算机操作系统 04 编程语言分类 Python解释器 05 Python和Python解释器 06 执行Python程序的两种方式 07 Python集成开发环境 变量 08 ...
  • python接口自动化(二十一)--unittest简介(详解)
    简介 前边的随笔主要介绍的requests模块的有关知识个内容,接下来看一下python的单元测试框架unittest.熟悉 或者了解java 的小伙伴应该都清楚常见的单元测试框架 Junit 和 TestNG,这个招聘的需求上也是经常见到 ...
  • 基于mapreduce实现图的三角形计数
    源代码放在我的github上,想细致了解的可以访问:TriangleCount on github 一.实验要求 1.1 实验背景         图的三角形计数问题是一个基本的图计算问题,是很多复杂网络分析(比如社交网络分析)的基础.目前 ...

2020 cecdns.com webmaster#cecdns.com
12 q. 0.077 s.
京ICP备10005923号