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使用xauth方式登录饭否网然后发消息
Apr 11 Python
在Python中操作字典之setdefault()方法的使用
May 21 Python
python执行子进程实现进程间通信的方法
Jun 02 Python
Python遍历目录并批量更换文件名和目录名的方法
Sep 19 Python
Python处理文本文件中控制字符的方法
Feb 07 Python
基于python 处理中文路径的终极解决方法
Apr 12 Python
Python打包方法Pyinstaller的使用
Oct 09 Python
Python缓存技术实现过程详解
Sep 25 Python
用pytorch的nn.Module构造简单全链接层实例
Jan 14 Python
Python计算机视觉里的IOU计算实例
Jan 17 Python
Pycharm无法打开双击没反应的问题及解决方案
Aug 17 Python
Pytorch可视化的几种实现方法
Jun 10 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 5.0对象模型深度探索之属性和方法
2008/03/27 PHP
php开启安全模式后禁用的函数集合
2011/06/26 PHP
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
Eclipse的PHP插件PHPEclipse安装和使用
2014/07/20 PHP
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
2014/04/03 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
使用JavaScript判断手机浏览器是横屏还是竖屏问题
2016/08/02 Javascript
js判断checkbox是否选中个数的方法(超简单)
2016/08/19 Javascript
解决VUE框架 导致绑定事件的阻止冒泡失效问题
2018/02/24 Javascript
JS中的事件委托实例浅析
2018/03/22 Javascript
vue 之 .sync 修饰符示例详解
2018/04/21 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
微信小程序实现星级评分和展示
2018/07/05 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
three.js利用gpu选取物体并计算交点位置的方法示例
2019/11/25 Javascript
JS实现简易留言板增删功能
2020/02/08 Javascript
JS实现随机点名器
2020/04/12 Javascript
vue使用vant中的checkbox实现全选功能
2020/11/17 Vue.js
python绘制散点图并标记序号的方法
2018/12/11 Python
python 实现在tkinter中动态显示label图片的方法
2019/06/13 Python
Python QQBot库的QQ聊天机器人
2019/06/19 Python
OpenCV 模板匹配
2019/07/10 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
django修改models重建数据库的操作
2020/03/31 Python
Django ModelForm组件原理及用法详解
2020/10/12 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
有abstract方法的类一定要用abstract修饰吗
2016/03/14 面试题
广播电视新闻学专业应届生求职信
2013/10/08 职场文书
留学推荐信怎么写
2014/01/25 职场文书
员工生日会策划方案
2014/06/14 职场文书
委托书怎样写
2014/08/30 职场文书
户籍证明格式
2014/09/15 职场文书
外科护士长工作总结
2015/08/12 职场文书
导游词之台湾阿里山
2019/10/23 职场文书
MySQL系列之十四 MySQL的高可用实现
2021/07/02 MySQL