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使用py2exe打包程序介绍
Nov 20 Python
Python线性方程组求解运算示例
Jan 17 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
Mar 08 Python
python利用高阶函数实现剪枝函数
Mar 20 Python
利用python求积分的实例
Jul 03 Python
django中使用Celery 布式任务队列过程详解
Jul 29 Python
关于pytorch中网络loss传播和参数更新的理解
Aug 20 Python
python+tkinter实现学生管理系统
Aug 20 Python
Python shelve模块实现解析
Aug 28 Python
Python实现图像的垂直投影示例
Jan 17 Python
浅谈pytorch池化maxpool2D注意事项
Feb 18 Python
如何利用pygame实现打飞机小游戏
May 30 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开源建站平台小结
2010/04/22 PHP
php中批量修改文件后缀名的函数代码
2011/10/23 PHP
php多重接口的实现方法
2015/06/20 PHP
laravel 中如何使用ajax和vue总结
2017/08/16 PHP
JQuery获取当前屏幕的高度宽度的实现代码
2011/07/12 Javascript
常见JS效果之图片减速度滚动实现代码
2011/12/08 Javascript
javascript测试题练习代码
2012/10/10 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
对于jQuery性能的一些优化建议
2015/08/13 Javascript
利用HTML5的画布Canvas实现刮刮卡效果
2015/09/06 Javascript
关于微信中a链接无法跳转问题
2016/08/02 Javascript
bootstrap手风琴制作方法详解
2017/01/11 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
JS中使用textPath实现线条上的文字
2017/12/25 Javascript
[35:29]Secret vs VG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
python批量修改文件编码格式的方法
2018/05/31 Python
python 接收处理外带的参数方法
2018/12/03 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
关于pytorch多GPU训练实例与性能对比分析
2019/08/19 Python
flask开启多线程的具体方法
2020/08/02 Python
记一次django内存异常排查及解决方法
2020/08/07 Python
python 绘制国旗的示例
2020/09/27 Python
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
中科前程Java笔试题
2016/11/20 面试题
大学生毕业自我鉴定
2013/11/06 职场文书
档案接收函
2014/01/13 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
《放小鸟》教学反思
2014/04/20 职场文书
关于环保的标语
2014/06/13 职场文书
先进事迹演讲稿
2014/09/01 职场文书
教师党员个人自我剖析材料
2014/09/29 职场文书
消防演习通知
2015/04/25 职场文书