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 相关文章推荐
Python2.7基于淘宝接口获取IP地址所在地理位置的方法【测试可用】
Jun 07 Python
python获取文件真实链接的方法,针对于302返回码
May 14 Python
Python 监测文件是否更新的方法
Jun 10 Python
python对矩阵进行转置的2种处理方法
Jul 17 Python
Python_查看sqlite3表结构,查询语句的示例代码
Jul 17 Python
python利用7z批量解压rar的实现
Aug 07 Python
Python numpy多维数组实现原理详解
Mar 10 Python
python 使用tkinter+you-get实现视频下载器
Nov 17 Python
Python3使用tesserocr识别字母数字验证码的实现
Jan 29 Python
python 网络编程要点总结
Jun 18 Python
Python并发编程实例教程之线程的玩法
Jun 20 Python
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
Apr 14 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中冒号、endif、endwhile、endfor使用介绍
2010/04/28 PHP
Trying to clone an uncloneable object of class Imagic的解决方法
2012/01/11 PHP
php 文件上传实例代码
2012/04/19 PHP
PHP编码规范的深入探讨
2013/06/06 PHP
php源码的使用方法讲解
2019/09/26 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
Extjs4 Treegrid 使用心得分享(经验篇)
2013/07/01 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
原生js配合cookie制作保存路径的拖拽
2015/12/29 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
jQuery实现三级菜单的代码
2016/05/09 Javascript
微信小程序 wxapp内容组件 text详细介绍
2016/10/31 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
vue项目上传Github预览的实现示例
2018/11/06 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
python复制文件的方法实例详解
2015/05/22 Python
opencv python 傅里叶变换的使用
2018/07/21 Python
在python下读取并展示raw格式的图片实例
2019/01/24 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
2019/08/26 Python
使用Python的Turtle绘制哆啦A梦实例
2019/11/21 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
tensorboard显示空白的解决
2020/02/15 Python
Python reversed函数及使用方法解析
2020/03/17 Python
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
毕业生求职推荐信
2013/11/04 职场文书
建筑工地大门标语
2014/06/18 职场文书
超市开店计划书
2014/09/15 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
2015年公司新年寄语
2014/12/08 职场文书
2015年财务人员工作总结
2015/04/10 职场文书
2016年过年放假安排通知
2015/08/18 职场文书