必威体育Betway必威体育官网
当前位置:首页 > IT技术

BeautifulSoup 爬取多玩今日囧图的图片

时间:2019-07-31 20:10:00来源:IT技术作者:seo实验室小编阅读:79次「手机版」
 

今日囧图

(1)使用技术

Python 3.5.2、requests 、BeautifulSoup 

(2)背景介绍

爬取的网站http://tu.duowan.com/tag/5037.html

需要爬取的内容是网站上面的图片

  • 首先我们观察一下今日囧途的每个图片点进去之后,会有详情页面。而这个想进入详情页面,我们必须要先爬取到这些url。之后通过url,然后进入页面也就是红框的的url
  • 然后进入详情页面之后,我们可以用开发工具查看是否有链接返回图片的信息,发现有个请求里面返回了所有的picInfo。好的这个时候爬取图片的思路就很清晰了,先到今日囧图的首页爬取到每个网页的信息,然后再到详情页面里面将所有的图片信息获取,之后将图片下载下来。

(3)详细代码

import requests
from bs4 import BeautifulSoup
import json
import os

#用来获取今日囧图所有的url
def get_today_urls(url):
    today_urls = []
    res = requests.get(url)
    res.encoding = 'utf-8'
    soup = BeautifulSoup(res.text,"html.parser")
    for url in soup.select(".i-list li em a"):
        today_urls.APPend(url['href'])
    return today_urls

#根据每个url来获取每个囧图界面里面的具体的内容
def get_details(url):
    url_param = url.split("/")[-1].split(".")[0]
    detail_url = "http://tu.duowan.com/index.php?r=show/getByGallery/&gid={}".format(url_param)
    res = requests.get(detail_url)
    res.encoding = 'utf-8'
    soup = BeautifulSoup(res.text,"html.parser")
    json_str = json.loads(str(soup))
    dir_name =json_str['gallery_title']
    dir_name = dir_name.split(":")[0]
    print(dir_name)
    if not os.path.exists(dir_name):
        os.mkdir(dir_name)
    pic_info = json_str["picInfo"]
    return pic_info , dir_name

#根据具体页面里面获取的图片的地址,来将图片保存到本地来。
def save_pic(url,dir_name):
    pic = requests.get(url)
    pic.encoding = 'utf-8'
    pic_name = url.split("/")[-1]
    pic_dir = os.path.join(dir_name , pic_name)
    if not os.path.exists(pic_dir):
        with open(pic_dir,"wb") as f:
            f.write(pic.content)
            f.close()

def get_duowan_pic():
    #今日囧图首页的url,用来传入get_today_urls(url)中获取今天所有的囧图的url
    url = "http://tu.duowan.com/tag/5037.html"
    today_urls = get_today_urls(url)
    for today_url in today_urls:
        pic_info, dir_name = get_details(today_url)
        for pic in pic_info:
            save_pic(pic["source"], dir_name)

def main():
    get_duowan_pic()

#函数入口
if __name__ == '__main__':
  main()

代码相对比较简单,有问题的话,大家可以一起讨论。

相关阅读

聚焦图片版权,百度区块链产品“图腾”如何打好这副牌?

7月18日,百度在北京发布了区块链数字版权保护产品“图腾”,宣布要从图片开始,逐步覆盖文字、视频、音频等面向全网、全类型、全领域

简单白色花边淘宝店铺欢迎光临图片素材

店铺装修是我们seo实验室宝店的基础工作,有好的店铺装修才能够留住顾客。今天装修宅小编为大家推荐简单白色花边淘宝店铺欢迎光临

汉王OCR文字识别软件使用教程 教你提取图片中的文字

汉王OCR文字识别软件算是一款知名度比较高的OCR技术技术软件了,但是它是要收费的哦!不过小编给大家分享的肯定是破解免费版本,稍后分

用深度学习破解12306图片验证码,识别率超96%- web效果

12306最新版图片验证码已被破解已是公开的秘密。比如市面上那么专业多抢票软件,早就破解了这个图片验证码。那他们到底是怎么实现

淘宝视频分辨率多少合适最清晰?图片分辨率要求多少?

大家在淘宝开店了以后,是肯定需要去上传商品的,然后就需要上传一系列的主图和短视频等,淘宝视频对于展现商品来说是很有用的功能,但是

分享到:

栏目导航

推荐阅读

热门阅读