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

使用Python爬取微博高清美女大图

时间:2019-10-26 02:42:11来源:IT技术作者:seo实验室小编阅读:71次「手机版」
 

微博美女

打开微博官网,这里以爬取美女博主Duebass的所有图片为例,首先打开她的主页

主页中显示的都是一些小图,我们点击其中的某一张图片,就可以查看她的大图了。

打开F12查看图片的地址信息,

//wx4.sinaimg.cn/mw690/75614297ly1g2sq66raswj21vl2qae82.jpg

复制这个地址去源代码中搜索,我们发现搜索不到这个url,那么狠明显,图片的地址信息是存放在js或者json文件中的。由于电脑端查看的信息不是很完整,这里我们使用手机端的模式来查看。点击左上角的手机图标然后刷新页面就可以切换到手机浏览模式

切换到手机视图之后,我们再打开Network这个选项,刷新页面信息,可以看到服务的发送了很多的文件过来,翻看这些文件我们发现其中有一个以getIndex开头的文件里面返回的信息中,包含了大量的图片的地址信息,使用浏览器打开这些图片,

图片正是我们所需要的,有些是大图,有些是小图,进一步分析发现,在一个pics数组中,带有large属性的图片是大图,而没有的则是小图。

知道这些信息之后,我们还需找到其他的分页地址信息,因为当前返回的数据中的图片并没有多少,用鼠标拖动页面获取更多的图片,然后在network中找到对应的地址,复制两个不同页的地址我们可以发现,除了page不同之外,其他的都是相同的。

https://m.weibo.cn/api/container/getIndex?is_hot[]=1&is_hot[]=1&jumpfrom=weibocom&type=uid&value=1969308311&containerid=1076031969308311&page=3
https://m.weibo.cn/api/container/getIndex?is_hot[]=1&is_hot[]=1&jumpfrom=weibocom&type=uid&value=1969308311&containerid=1076031969308311&page=4

最后我们还需找到一共有多少页,

查看头部信息

total的数量是4081,然后每页大概有几十张图片,我们将page参数的值改成50,查看头信息,发现page显示的是50,然后将page值改成60,发现显示的还是50,说明它的页数也就是50了,知道这些信息之后,那么写出代码就变得很简单了。

#爬取微博 Duebass的图片

from urllib import request
import re
import ssl

file_path = 'F:/blog/'
#http://wallpaper.apc.360.cn/index.php?c=WallPaper&a=getAPPsByCategory&cid=6&start=6590&count=50
base_url = 'https://m.weibo.cn/api/container/getIndex?is_hot[]=1&is_hot[]=1&jumpfrom=weibocom&type=uid&value=1969308311&containerid=1076031969308311&page='

header = {
    'User-Agent': 'Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36Mozilla/5.0 (iPhone; cpu iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1',
    'Accept': 'application/json, text/plain, */*',
    'referer': 'https://m.weibo.cn/p/1005051969308311/photos?from=page_100505&from=page_100505&mod=TAB&mod=TAB&jumpfrom=weibocom'
}

context = ssl._create_unverified_context()

for i in range(5, 6):
    try:
        realurl = base_url+str(i)
        req = request.Request(url=realurl, headers=header)
        #resp = requests.get(realurl, headers=header)
        resp = request.urlopen(req, context=context).read().decode()
        print('==============正在下载第'+str(i)+'页的图片===============')
        # 先获取所有的large里面的url,注意观察,大图的url中都包含/large,那么我们获取所有的url然后过虐掉不包含/large的url就行了
        pat = '"url":"(.*?)"'
        list1 = re.compile(pat).findall(resp)
        list2 = filter(lambda url : url.find('/large') != -1, list1)
        list2 = list(list2)
        for j in range(0, len(list2)-1):
            pic_url = list2[j].replace('\/', '/')
            request.urlretrieve(pic_url, file_path+str(i)+str(j)+'.jpg')
        print('============第' + str(i) + '页的图片下载完成===============')

    except Exception as ERROR:
        print(error)

下载过程中可能会出现计算机拒绝等异常信息,可根据控制台打印的情况,将出了异常的页数重新下载。

文章最后发布于: 2019-05-12 16:44:23

相关阅读

菜鸟驿站智能柜全面开启“刷脸取件”

A5创业网(公众号:iadmin5)3月13日消息,不用掏手机,也不用输入取件码, “靠面子”就能取回快递了。菜鸟网络宣布,国内所有带

干货分享 | 如何通过有趣的内容营销,获取用户优质流量?

核心摘要:对于预算有限的品牌主来说,常常会遇到以下问题:如何通过KOL精准的圈选符合品牌策略的TA(目标受众)?实际KOL流量如何有效真

php array函数 array_slice截取数组

array_slice($arr,0,3)  //获取键值0-3的数组元素更多:http://www.php100.com/cover/php/191.html

PY27 RE匹配 输入账号密码获取盐城工学院教务系统成绩

# coding:utf-8 # 盐工教务系统 import urllib2,urllib import cookielib,re #临时存储学生cookie stuCookie='' #声明一个Cook

淘宝双十一超级红包怎么领取?怎么用 ?

每年的双十一活动都会推出非常划算的福利购物活动,小编不知道大家有没有听说,今年的双11合伙人活动集能量共同瓜分10亿红包,还不知道

分享到:

栏目导航

推荐阅读

热门阅读