没有内涵段子可以刷了,利用Python爬取段友之家贴吧图片和小视频(含源码)

由于最新的视频整顿风波,内涵段子APP被迫关闭,广大段友无家可归,但是最近发现了一个“段友”的app,版本更新也挺快,正在号召广大段友回家,如下图,有兴趣的可以下载看看(ps:我不是打广告的,没收广告费的)

同时,之前同事也发了一个贴吧的段子聚居地,客官稍等,马上奉上连接:
段友之家?https://tieba.baidu.com/f?ie=...

然后呢,看到上面,确实好多段友在上面,于是乎,我就想爬取他们的图片和小视频,就有了这篇文章的主题:

其实吧,用Python爬取网站数据是最基础的东西,也不难,但是我还想分享给大家,一起学习和交流。

爬取这些网站里的数据主要用的模块是bs4、requests以及os,都是常用模块

大概思路就是通过requests模块请求网页html数据,然后通过bs4模块下的BeautifulSoup分析请求的网页,然后通过css查找器查找内涵段子的图片以及小视频的地址,主要实现代码如下:

def download_file(web_url):
    """获取资源的url"""
    # 下载网页
    print(‘正在下载网页: %s...‘ % web_url)
    result = requests.get(web_url)
    soup = bs4.BeautifulSoup(result.text, "html.parser")
    # 查找图片资源
    img_list = soup.select(‘.vpic_wrap img‘)
    if img_list == []:
        print(‘未发现图片资源!‘)
    else:
        # 找到资源,开始写入
        for img_info in img_list:
            file_url = img_info.get(‘bpic‘)
            write_file(file_url, 1)
    # 查找视频资源
    video_list = soup.select(‘.threadlist_video a‘)
    if video_list == []:
        print(‘未发现视频资源!‘)
    else:
        # 找到资源,开始写入
        for video_info in video_list:
            file_url = video_info.get(‘data-video‘)
            write_file(file_url, 2)
    print(‘下载资源结束:‘, web_url)
    next_link = soup.select(‘#frs_list_pager .next‘)
    if next_link == []:
        print(‘下载资料结束!‘)
    else:
        url = next_link[0].get(‘href‘)
        download_file(‘https:‘ + url)

学习Python+  725479218

得到图片以及视频的地址之后,肯定还不够,还得把这些资源写入到本地,方式是通过二进制的方式来读取远程文件资源,然后分类写入到本地,实现的主要代码如下:

def write_file(file_url, file_type):
    """写入文件"""
    res = requests.get(file_url)
    res.raise_for_status()
    # 文件类型分文件夹写入
    if file_type == 1:
        file_folder = ‘nhdz\\jpg‘
    elif file_type == 2:
        file_folder = ‘nhdz\\mp4‘
    else:
        file_folder = ‘nhdz\\other‘
    folder = os.path.exists(file_folder)
    # 文件夹不存在,则创建文件夹
    if not folder:
        os.makedirs(file_folder)
    # 打开文件资源,并写入
    file_name = os.path.basename(file_url)
    str_index = file_name.find(‘?‘)
    if str_index > 0:
        file_name = file_name[:str_index]
    file_path = os.path.join(file_folder, file_name)
    print(‘正在写入资源文件:‘, file_path)
    image_file = open(file_path, ‘wb‘)
    for chunk in res.iter_content(100000):
        image_file.write(chunk)
    image_file.close()
    print(‘写入完成!‘)

学习Python+  725479218

最后,再奉上完整的代码吧。要不然,会被人说的,说话说一半,说福利,也不给全,这就太不够意思了。客官别急,马上奉上……

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
爬取百度贴吧,段友之家的图片和视频
author: cuizy
time:2018-05-19
"""

import requests
import bs4
import os

def write_file(file_url, file_type):
    """写入文件"""
    res = requests.get(file_url)
    res.raise_for_status()
    # 文件类型分文件夹写入
    if file_type == 1:
        file_folder = ‘nhdz\\jpg‘
    elif file_type == 2:
        file_folder = ‘nhdz\\mp4‘
    else:
        file_folder = ‘nhdz\\other‘
    folder = os.path.exists(file_folder)
    # 文件夹不存在,则创建文件夹
    if not folder:
        os.makedirs(file_folder)
    # 打开文件资源,并写入
    file_name = os.path.basename(file_url)
    str_index = file_name.find(‘?‘)
    if str_index > 0:
        file_name = file_name[:str_index]
    file_path = os.path.join(file_folder, file_name)
    print(‘正在写入资源文件:‘, file_path)
    image_file = open(file_path, ‘wb‘)
    for chunk in res.iter_content(100000):
        image_file.write(chunk)
    image_file.close()
    print(‘写入完成!‘)

学习Python+  725479218

def download_file(web_url):
    """获取资源的url"""
    # 下载网页
    print(‘正在下载网页: %s...‘ % web_url)
    result = requests.get(web_url)
    soup = bs4.BeautifulSoup(result.text, "html.parser")
    # 查找图片资源
    img_list = soup.select(‘.vpic_wrap img‘)
    if img_list == []:
        print(‘未发现图片资源!‘)
    else:
        # 找到资源,开始写入
        for img_info in img_list:
            file_url = img_info.get(‘bpic‘)
            write_file(file_url, 1)
    # 查找视频资源
    video_list = soup.select(‘.threadlist_video a‘)
    if video_list == []:
        print(‘未发现视频资源!‘)
    else:
        # 找到资源,开始写入
        for video_info in video_list:
            file_url = video_info.get(‘data-video‘)
            write_file(file_url, 2)
    print(‘下载资源结束:‘, web_url)
    next_link = soup.select(‘#frs_list_pager .next‘)
    if next_link == []:
        print(‘下载资料结束!‘)
    else:
        url = next_link[0].get(‘href‘)
        download_file(‘https:‘ + url)

# 主程序入口
if __name__ == ‘__main__‘:
    web_url = ‘https://tieba.baidu.com/f?ie=utf-8&kw=段友之家‘
    download_file(web_url)

原文地址:http://blog.51cto.com/13786054/2125110

时间: 2025-01-03 13:28:25

没有内涵段子可以刷了,利用Python爬取段友之家贴吧图片和小视频(含源码)的相关文章

python爬虫教程:《利用Python爬取表情包》

python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!老师带领你使用多线程爬虫一键爬取20w的表情包~ python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!老师带领你使用多线程爬虫一键爬取20w的表情包~ python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!老师带领你使用多线程爬虫一键爬取20w的表情包~ python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!

利用Python爬取豆瓣电影

目标:使用Python爬取豆瓣电影并保存MongoDB数据库中 我们先来看一下通过浏览器的方式来筛选某些特定的电影: 我们把URL来复制出来分析分析: https://movie.douban.com/tag/#/?sort=T&range=0,10&tags=%E7%94%B5%E5%BD%B1,%E7%88%B1%E6%83%85,%E7%BE%8E%E5%9B%BD,%E9%BB%91%E5%B8%AE 有3个字段是非常重要的: 1.sort=T 2.range=0,10 3.tag

最后轻松一夏,周末利用python爬取“陈翔六点半”搞笑视频!

觉得程序员再忙也需要给自己安排一点娱乐时间,对自己好点,自己对自己不好,谁会? 自己娱乐一般会有:跑步.看电影.小视频,而小视频是最家常的娱乐方式,看得最多的小视频是「 陈翔六点半 」,咦! 拍得搞笑,演技也一流,也不乏有内涵!非常推荐大家看看. 时间太贵,我耗不起 正题 先上Python爬取小视频的效果图,duang.duang.duang.想下载什么就是什么,哈哈. 打开浏览器(电脑版,方便调试)输入微博 url 点击输入框,输入「陈翔六点半」,回车搜索 但是发现在这个页面就只用几个视频.滑

利用python爬取海量疾病名称百度搜索词条目数的爬虫实现

实验原因: 目前有一个医疗百科检索项目,该项目中对关键词进行检索后,返回的结果很多,可惜结果的排序很不好,影响用户体验.简单来说,搜索出来的所有符合疾病中,有可能是最不常见的疾病是排在第一个的,而最有可能的疾病可能需要翻很多页才能找到. 实验目的: 为了优化对搜索结果的排序,想到了利用百度搜索后有显示搜索到多少词条,利用这个词条数,可以有效的对疾病排名进行一个优化.从一方面看,某一个疾病在百度的搜索词条数目越多,表示这个词条的信息特别丰富,侧面反映了搜索这个词条的人特别多,从而可以推出这个疾病在

利用python爬取天气预报然后发送给微信好友

需要利用微信的api接口,itchat.然后来看一下代码: #!/usr/bin/python #-*- coding:utf-8 -*- import itchat import re import urllib2 import itchat #模拟浏览器 hearders = "User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60

利用python爬取58同城简历数据

最近接到一个工作,需要获取58同城上面的简历信息(http://gz.58.com/qzyewu/).最开始想到是用python里面的scrapy框架制作爬虫.但是在制作的时候,发现内容不能被存储在本地变量 response 中.当我通过shell载入网页后,虽然内容能被储存在response中,用xpath对我需要的数据进行获取时,返回的都是空值.考虑到数据都在源码中,于是我使用python里的beautifulSoup通过下载源码的方式去获取数据,然后插入到数据库. 需要的python包ur

利用python爬取贝壳网租房信息

最近准备换房子,在网站上寻找各种房源信息,看得眼花缭乱,于是想着能否将基本信息汇总起来便于查找,便用python将基本信息爬下来放到excel,这样一来就容易搜索了. 1. 利用lxml中的xpath提取信息 xpath是一门在 xml文档中查找信息的语言,xpath可用来在 xml 文档中对元素和属性进行遍历.对比正则表达式 re两者可以完成同样的工作,实现的功能也差不多,但xpath明显比re具有优势.具有如下优点:(1)可在xml中查找信息 :(2)支持html的查找:(3)通过元素和属性

利用python爬取龙虎榜数据及后续分析

##之前已经有很多人写过相关内容,但我之前并未阅读过,这个爬虫也是按照自己的思路写的,可能比较丑陋,请见谅! 本人作为Python爬虫新手和股市韭菜,由于时间原因每晚没办法一个个翻龙虎榜数据,所以希望借助爬虫筛选出有用信息,供我分析(其实就是想偷懒...). 每日的龙虎榜数据都在:http://data.eastmoney.com/stock/lhb.html 爬取过程其实很简单,不需要登陆,也不需要模拟浏览器登录:数据量小,因此也不用多进程,也不用更换IP等反爬虫手段.后续的分析可能更关键.

利用Python爬取可用的代理IP

前言 就以最近发现的一个免费代理IP网站为例:http://www.xicidaili.com/nn/.在使用的时候发现很多IP都用不了. 所以用Python写了个脚本,该脚本可以把能用的代理IP检测出来. 1 #encoding=utf8 2 import urllib2 3 from bs4 import BeautifulSoup 4 import urllib 5 import socket 6 7 User_Agent = 'Mozilla/5.0 (Windows NT 6.3; W