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多线程扫描端口示例
Jan 16 Python
Python验证码识别处理实例
Dec 28 Python
Python实现自动登录百度空间的方法
Jun 10 Python
python使用TensorFlow进行图像处理的方法
Feb 28 Python
django manage.py扩展自定义命令方法
May 27 Python
python基础 range的用法解析
Aug 23 Python
Python FTP文件定时自动下载实现过程解析
Nov 12 Python
基于python实现计算且附带进度条代码实例
Mar 31 Python
python多线程实现同时执行两个while循环的操作
May 02 Python
Django模板获取field的verbose_name实例
May 19 Python
基于python检查矩阵计算结果
May 21 Python
浅谈对python中if、elif、else的误解
Aug 20 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 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
通过5个php实例细致说明传值与传引用的区别
2012/08/08 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
PHP文件操作详解
2016/12/30 PHP
ThinkPHP5 验证器的具体使用
2018/05/31 PHP
Laravel validate error处理,ajax,json示例
2019/10/25 PHP
JavaScript 学习点滴记录
2009/04/24 Javascript
Jquery异步请求数据实例代码
2011/12/28 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
2013/01/17 Javascript
js切换光标示例代码
2013/10/10 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
javascript的动态加载、缓存、更新以及复用(一)
2014/06/09 Javascript
jQuery中first()方法用法实例
2015/01/06 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
2016/07/20 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
JScript实现地址选择功能
2017/08/15 Javascript
微信小程序返回多级页面的实现方法
2017/10/27 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
python如何对实例属性进行类型检查
2018/03/20 Python
python 显示数组全部元素的方法
2018/04/19 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
Python线上环境使用日志的及配置文件
2019/07/28 Python
python3 sorted 如何实现自定义排序标准
2020/03/12 Python
Beauty Expert美国/加拿大:购买奢侈美容产品
2018/12/05 全球购物
值传递还是引用传递
2015/02/08 面试题
办公室内勤工作职责
2013/12/11 职场文书
战略合作意向书范本
2014/04/01 职场文书
法定代表人授权委托书范文
2014/08/02 职场文书
初中家长评语和期望
2014/12/26 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
地道战观后感400字
2015/06/04 职场文书
redis内存空间效率问题的深入探究
2021/05/17 Redis
5道关于python基础 while循环练习题
2021/11/27 Python
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS