Python实现的爬取百度贴吧图片功能完整示例


Posted in Python onMay 10, 2019

本文实例讲述了Python实现的爬取百度贴吧图片功能。分享给大家供大家参考,具体如下:

#coding:utf-8
import requests
import urllib2
import urllib
```
from lxml import etree
class Tieba:
  def __init__(self):
    self.tiebaName = raw_input("请输入需要爬取的贴吧:")
    self.beginPage = int(raw_input("请输入爬取的起始页:"))
    self.endPage = int(raw_input("请输入爬取的结束页:"))
    self.baseURL = "http://tieba.baidu.com"
    #self.headers = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36"}
    self.headers = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1 Trident/5.0;"} def startWork(self):
    """
      发送贴吧每一页的url请求
    """
    for page in range(self.beginPage, self.endPage + 1):
      pn = (page - 1) * 50
      keyword = {"kw" : self.tiebaName, "pn" : pn}
      kw = urllib.urlencode(keyword)
      url = self.baseURL + "/f?" + kw
      #print url
      html = self.loadRequest(url)
      self.loadPage(html)
  def loadRequest(self, url):
    """
      发送请求,返回响应
      url: 发送请求的url地址
    """
    request = urllib2.Request(url, headers = self.headers)
    #request = urllib2.Request(url)
    response = urllib2.urlopen(request)
    return response.read()
  def loadPage(self, html):
    """
      提取每个帖子的url,并发送请求,获取响应
      html: 贴吧每一页的html
    """
    content = etree.HTML(html)
    print '------'
    print content
    # xpath 返回的所有匹配成功后的结果的列表
    #pagelink_list = content.xpath("//div[@class='threadlist_lz clearfix']/div/a[@class='j_th_tit']/@href")
    pagelink_list = content.xpath("//div[@class='col2_right j_threadlist_li_right']//div/a/@href")
    pagelink_list = content.xpath("//div[@class='t_con cleafix']//div/a/@href")
    for link in pagelink_list:
      print link
      self.loadImage(self.loadRequest(self.baseURL + link))
  def loadImage(self, html):
    """
      提取帖子里用户发送的图片的url地址
      html: 每个帖子的html
    """
    content = etree.HTML(html)
    imagelink_list = content.xpath("//div[@class='p_content ']//img[@class='BDE_Image']/@src")
    for link in imagelink_list:
      self.writeImage(self.loadRequest(link), link[-10:])
  def writeImage(self, data, filename):
    """
      将图片的响应数据,写入到本地磁盘里
      data: 图片的响应数据
      filename: 文件名(图片url的后10位)
    """
    print "正在保存图片...%s" % filename
    with open(filename, "wb") as f:
      f.write(data)
if __name__ == "__main__":
  tieba = Tieba()
  tieba.startWork()

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
在Python中使用全局日志时需要注意的问题
May 06 Python
Python实现Linux命令xxd -i功能
Mar 06 Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 Python
numpy 进行数组拼接,分别在行和列上合并的实例
May 08 Python
Python中pip更新和三方插件安装说明
Jul 08 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
Aug 05 Python
详解Python并发编程之从性能角度来初探并发编程
Aug 23 Python
python 实现list或string按指定分段
Dec 25 Python
python爬虫添加请求头代码实例
Dec 28 Python
使用Python脚本从文件读取数据代码实例
Jan 19 Python
python实现信号时域统计特征提取代码
Feb 26 Python
Python实现天气查询软件
Jun 07 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
May 10 #Python
Django框架实现分页显示内容的方法详解
May 10 #Python
Django框架验证码用法实例分析
May 10 #Python
Python爬虫实现验证码登录代码实例
May 10 #Python
详解如何管理多个Python版本和虚拟环境
May 10 #Python
不到40行代码用Python实现一个简单的推荐系统
May 10 #Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
May 10 #Python
You might like
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
php mysql_list_dbs()函数用法示例
2017/03/29 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
使用Javascript和DOM Interfaces来处理HTML
2006/10/09 Javascript
改进UCHOME的记录发布,增强可访问性用户体验
2011/01/17 Javascript
JS记录用户登录次数实现代码
2014/01/15 Javascript
JQuery悬停控制图片轮播——代码简单
2015/08/05 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
js窗口震动小程序分享
2016/11/28 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
Vue2.0利用vue-resource上传文件到七牛的实例代码
2017/07/28 Javascript
在vue中安装使用vux的教程详解
2018/09/16 Javascript
微信小程序解析富文本过程详解
2019/07/13 Javascript
bootstrap实现嵌套模态框的实例代码
2020/01/10 Javascript
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
2020/02/10 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
[14:56]教你分分钟做大人:巫医
2014/10/30 DOTA
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
Python获取当前路径实现代码
2017/05/08 Python
spyder常用快捷键(分享)
2017/07/19 Python
python的Tqdm模块的使用
2018/01/10 Python
python多线程同步实例教程
2019/08/11 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
宿舍卫生检讨书
2014/01/16 职场文书
电力安全事故反思
2014/04/27 职场文书
祖国在我心中演讲稿300字
2014/05/04 职场文书
计算机毕业大学生求职信
2014/06/26 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
股份转让协议书范本
2015/01/27 职场文书
避暑山庄导游词
2015/02/04 职场文书
神秘岛读书笔记
2015/07/01 职场文书
详解如何使用Node.js实现热重载页面
2021/05/06 Javascript
超级详细实用的pycharm常用快捷键
2021/05/12 Python
Django实现聊天机器人
2021/05/31 Python