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实现运行其他程序的四种方式实例分析
Aug 17 Python
Python3 加密(hashlib和hmac)模块的实现
Nov 23 Python
Python3学习urllib的使用方法示例
Nov 29 Python
Python温度转换实例分析
Jan 17 Python
Python面向对象之类的内置attr属性示例
Dec 14 Python
Python实现深度遍历和广度遍历的方法
Jan 22 Python
浅谈python 中类属性共享的问题
Jul 02 Python
利用ImageAI库只需几行python代码实现目标检测
Aug 09 Python
python openvc 裁剪、剪切图片 提取图片的行和列
Sep 19 Python
python集成开发环境配置(pycharm)
Feb 14 Python
Python任务调度模块APScheduler使用
Apr 15 Python
Python图像读写方法对比
Nov 16 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在字符断点处截断文字的实现代码
2011/04/21 PHP
JavaScript 继承详解 第一篇
2009/08/30 Javascript
一个简单的js动画效果代码
2010/07/20 Javascript
火狐4、谷歌12不支持Jquery Validator的解决方法分享
2011/06/20 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
JavaScript判断表单为空及获取焦点的方法
2016/02/12 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
JQuery控制图片由中心点逐渐放大效果
2016/06/26 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
2016/08/15 Javascript
javascript 判断页面访问方式电脑或者移动端
2016/09/19 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
详解JavaScript树结构
2017/01/09 Javascript
微信小程序 定位到当前城市实现实例代码
2017/02/23 Javascript
JavaScript实现简单动态进度条效果
2018/04/06 Javascript
使用vue打包时vendor文件过大或者是app.js文件很大的问题
2018/06/29 Javascript
Python字符串处理函数简明总结
2015/04/13 Python
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
2019/08/12 Python
Python turtle画图库&&画姓名实例
2020/01/19 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
2020/03/30 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
Pycharm安装Qt Design快捷工具的详细教程
2020/11/18 Python
Python常用GUI框架原理解析汇总
2020/12/07 Python
为智能设备设计个性化保护套网站:caseable
2017/01/05 全球购物
extern是什么意思
2016/03/10 面试题
《雷雨》教学反思
2014/02/20 职场文书
《在山的那边》教学反思
2014/02/23 职场文书
中介公司区域经理岗位职责范本
2014/03/02 职场文书
2014年党员自我评议总结
2014/09/23 职场文书
2014年人力资源工作总结
2014/11/19 职场文书
怎样写好工作计划
2019/04/10 职场文书
标准发言稿结尾
2019/07/18 职场文书
vue中利用mqtt服务端实现即时通讯的步骤记录
2021/07/01 Vue.js
《遗弃》开发商删推文要跑路?官方回应:还在开发
2022/04/03 其他游戏
Python线程池与GIL全局锁实现抽奖小案例
2022/04/13 Python