Python爬虫实战(五) :下载百度贴吧帖子里的所有图片

原创 2017年09月05日 12:31:16
准备工作:
目标网址:https://tieba.baidu.com/p/5113603072
目的:    下载该页面上的所有楼层里的照片

第一步:分析网页源码
火狐浏览器  ---> 在该页面上右击 “查看页面源代码”,会打开一个新的标签页。

第二步:查找图片源地址
在新标签页上ctrl + F,输入jpg,找到第一个图片的源地址

<img class="BDE_Image" src="https://imgsa.baidu.com/forum/w%3D580/sign=29a773eb871001e94e3c1407880f7b06/50cf3bc79f3df8dc5b6bb593c711728b47102859.jpg"
BTW,怎么知道这个链接是不是第一张图,在查找jpg的时候,直接复制jpg网址在浏览器上输入回车对比即可,如果是超链接,直接点击即可。

查找后分析,所有楼层里面的图片都是这个格式<img class="BDE_Image" src=.......


第三步:使用强大BeautifulSoup,过滤标签img 和 class="BDE_Image",代码:
soup = BeautifulSoup(html, 'html.parser')
img_info = soup.find_all('img', class_='BDE_Image')

第四步:找出所有照片的原始链接,代码
for img in img_info:
    img.get("src")

第五步:下载
使用urllib.request.urlretrieve函数

整合后写成完整代码:


#coding=utf-8  
import requests
import urllib.request
from bs4 import BeautifulSoup

def getHtml(url):  
    page = requests.get(url)  
    html =page.text  
    return html

def getImg(html):
    soup = BeautifulSoup(html, 'html.parser')  
    img_info = soup.find_all('img', class_='BDE_Image')
    for index,img in enumerate(img_info,1):
        print ("正在下载第{}张图片".format(index))
        urllib.request.urlretrieve(img.get("src"),'%s.jpg' % index)  
        
if __name__=='__main__':
    url = "https://tieba.baidu.com/p/5113603072"
    html = getHtml(url)
    getImg(html)

    print ("OK!All DownLoad!")




我们看到该帖子远远不止一页,我们也想下载其他页面上的图片怎么办?

点击第二页,网址变为
https://tieba.baidu.com/p/5113603072?pn=2

将pn=2改成pn=1试试,回车,又发现与之前的网站https://tieba.baidu.com/p/5113603072指向的是同一个页面,因此可以循环来访问了。

代码:

#coding=utf-8
import re
import requests
import urllib.request 
from bs4 import BeautifulSoup

def getHtml(url):  
    page = requests.get(url)  
    html =page.text  
    return html

def getImg(html):
    soup = BeautifulSoup(html, 'html.parser')  
    img_info = soup.find_all('img', class_='BDE_Image')
    global index 
    for index,img in enumerate(img_info,index+1):
        print ("正在下载第{}张图片".format(index))
        urllib.request.urlretrieve(img.get("src"),'%s.jpg' % index)

def getMaxPage(url):
    html = getHtml(url)
    reg  = re.compile(r'max-page="(\d+)"')
    page = re.findall(reg,html)
    page = int(page[0])
    return page
    
        
if __name__=='__main__':
    url   = "https://tieba.baidu.com/p/5113603072"
    page  = getMaxPage(url)
    index = 0
    for i in range(1,page):
        url = "%s%s"  % ("https://tieba.baidu.com/p/5113603072?pn=",str(i))
        html = getHtml(url)
        getImg(html)
        
    print ("OK!All DownLoad!")


   





总结:BeautifulSoup功能真是太强大了。





Python_百度图片以及百度贴吧图片抓取

一、百度图片抓取 解决问题:爬虫下载的图片不能打开 未解决问题:百度图片下拉翻页功能 二。百度贴吧图片抓取...
  • zhangweiguo_717
  • zhangweiguo_717
  • 2016年10月23日 10:57
  • 1824

python3 多页爬虫爬取百度贴吧帖子所有图片

逛博客,发现了python。说是人工智能开发的主要语言,所以就来了兴趣,打算抽空看看。网上找了教程觉得语法上,相较于.net和java反倒更简单点。基本语法看完,总要弄点东西吧...
  • caopeihuaaini
  • caopeihuaaini
  • 2017年07月18日 09:08
  • 771

python爬虫实战二之爬取百度贴吧帖子

目标: 1.对百度贴吧的任意帖子进行抓取 2.指定是否只抓取楼主发帖内容 3.将抓取到的内容分析并保存到文件 1.URL格式的确定 首先,我们先观察一下百度贴吧的任意一个帖子。比如:http://...
  • finna_xu
  • finna_xu
  • 2017年03月31日 14:01
  • 592

Python 抓取贴吧里某楼主所有的帖子

操作的url:  http://tieba.baidu.com/p/2887364960?see_lz=1&pn=1 import urllib.request import http.client...
  • u011056389
  • u011056389
  • 2014年03月06日 22:25
  • 2183

《python爬虫实战》:爬取贴吧上的帖子

《python爬虫实战》:爬取贴吧上的帖子经过前面两篇例子的练习,自己也对爬虫有了一定的经验。 由于目前还没有利用BeautifulSoup库,因此关于爬虫的难点还是正则表达式的书写。但是,当写几个...
  • u010412719
  • u010412719
  • 2015年12月06日 22:18
  • 9485

利用爬虫抓取百度贴吧的图片

「近年来,百度贴吧已经成为一些同学生活中必不可少的一部分,利用空闲时间刷刷贴吧、看看帖子也成为一些人的日常。同学们经常会遇到这样一个问题,有一个图片帖,帖子中有大量自己喜欢的图片(如http://ti...
  • WiseDoge
  • WiseDoge
  • 2016年04月08日 22:11
  • 922

Python爬虫入门——爬取贴吧图片

最近忽然想听一首老歌,“I believe”  于是到网上去搜,把几乎所有的版本的MV都看了一遍(也是够无聊的),最喜欢的还是最初版的《我的野蛮女友》电影主题曲的哪个版本,想起女神全智贤,心血来潮,于...
  • z49434574
  • z49434574
  • 2016年06月01日 00:40
  • 4843

Python2.7 自动抓取某贴吧所有帖子的图片

自动抓取某贴吧所有帖子的图片
  • whanjiew88
  • whanjiew88
  • 2016年11月23日 22:13
  • 318

Scrapy 爬取百度贴吧指定帖子的发帖人和回帖人

该篇文章将是Scrapy爬虫系列的开篇,随后会不定时更新该框架方面的内容和知识,在scrapy之前写爬虫主要用的BeautifulSoup, request 和urllib,但随着使用程度的加深,慢慢...
  • Gamer_gyt
  • Gamer_gyt
  • 2017年07月13日 09:26
  • 2870

python爬虫爬取NBA贴吧的所有精品贴

首先用直接的方法写,先尝试下能否爬取成功 #coding:utf-8 import urllib2,urllib import re ''' 1.准备url地址 2.准备请求头 3.创建请求对象 4...
  • zhaobig
  • zhaobig
  • 2017年08月15日 19:35
  • 7828
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python爬虫实战(五) :下载百度贴吧帖子里的所有图片
举报原因:
原因补充:

(最多只允许输入30个字)