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 相关文章推荐
精确查找PHP WEBSHELL木马的方法(1)
Apr 12 Python
python中使用pyhook实现键盘监控的例子
Jul 18 Python
python简单分割文件的方法
Jul 30 Python
详解python开发环境搭建
Dec 16 Python
python定时利用QQ邮件发送天气预报的实例
Nov 17 Python
pytorch cnn 识别手写的字实现自建图片数据
May 20 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
May 25 Python
Python Gitlab Api 使用方法
Aug 28 Python
python3文件复制、延迟文件复制任务的实现方法
Sep 02 Python
Python 矩阵转置的几种方法小结
Dec 02 Python
Flask模板引擎Jinja2使用实例
Apr 23 Python
Python数据分析库pandas高级接口dt的使用详解
Dec 11 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的安全
2006/10/09 PHP
phpstrom使用xdebug配置方法
2013/12/17 PHP
PHP设计模式之观察者模式实例
2016/02/22 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
php验证码生成器
2017/05/24 PHP
锋利的jQuery 第三章章节总结的例子
2010/03/23 Javascript
formValidator3.3的ajaxValidator一些异常分析
2011/07/12 Javascript
javascript的console.log()用法小结
2012/05/31 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
为什么我们要做三份 Webpack 配置文件
2017/09/18 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
2017/11/30 Javascript
解决Layui数据表格中checkbox位置不居中的方法
2018/08/15 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
2018/12/10 jQuery
JavaScript实现的级联算法示例【省市二级联动功能】
2018/12/25 Javascript
vue+element表格导出为Excel文件
2019/09/26 Javascript
继承行为在 ES5 与 ES6 中的区别详解
2019/12/24 Javascript
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
基于python 字符编码的理解
2017/09/02 Python
python web.py开发httpserver解决跨域问题实例解析
2018/02/12 Python
python利用tkinter实现屏保
2019/07/30 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
Python中全局变量和局部变量的理解与区别
2021/02/07 Python
HTTP状态码详解
2021/03/18 杂记
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
美国二手奢侈品寄售网站:TheRealReal
2016/10/29 全球购物
Trip.com澳大利亚:在线旅行社
2019/12/01 全球购物
《阳光》教学反思
2014/02/23 职场文书
小学优秀班集体申报材料
2014/05/25 职场文书
语文教研活动总结
2014/07/02 职场文书
先进个人材料怎么写
2014/12/30 职场文书
女方离婚起诉书
2015/05/18 职场文书
观看建国大业观后感
2015/06/01 职场文书
SQL实现LeetCode(196.删除重复邮箱)
2021/08/07 MySQL
古见同学有交流障碍症 第二季宣传CM公开播出
2022/04/11 日漫
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers