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的Django框架中Manager方法的使用
Jul 21 Python
Python tkinter模块中类继承的三种方式分析
Aug 08 Python
python3+PyQt5实现拖放功能
Apr 24 Python
Python 字符串与二进制串的相互转换示例
Jul 23 Python
python中强大的format函数实例详解
Dec 05 Python
Pandas DataFrame数据的更改、插入新增的列和行的方法
Jun 25 Python
python画图——实现在图上标注上具体数值的方法
Jul 08 Python
Django获取应用下的所有models的例子
Aug 30 Python
Django项目使用ckeditor详解(不使用admin)
Dec 17 Python
利用pandas将非数值数据转换成数值的方式
Dec 18 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
Dec 27 Python
写好Python代码的几条重要技巧
May 21 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
基于php设计模式中单例模式的应用分析
2013/05/15 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
用PHP做了一个领取优惠券活动的示例代码
2019/07/05 PHP
Javascript 面向对象之重载
2010/05/04 Javascript
jQuery实现带分组数据的Table表头排序实例分析
2015/11/24 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
js与jquery正则验证电子邮箱、手机号、邮政编码的方法
2016/07/04 Javascript
jquery siblings获取同辈元素用法实例分析
2016/07/25 Javascript
浅析ES6的八进制与二进制整数字面量
2016/08/30 Javascript
移动端脚本框架Hammer.js
2016/12/15 Javascript
移动端如何用下拉刷新的方式实现上拉加载
2018/12/10 Javascript
泛谈JS逻辑判断选择器 || &&
2019/05/24 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
2020/05/19 jQuery
JS判断数组是否包含某元素实现方法汇总
2020/06/24 Javascript
微信小程序整个页面的自动适应布局的实现
2020/07/12 Javascript
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
Python中的元类编程入门指引
2015/04/15 Python
Python编程中运用闭包时所需要注意的一些地方
2015/05/02 Python
浅谈Python中列表生成式和生成器的区别
2015/08/03 Python
如何通过python画loss曲线的方法
2019/06/26 Python
Django模板导入母版继承和自定义返回Html片段过程解析
2019/09/18 Python
python解析多层json操作示例
2019/12/30 Python
Tensorflow训练MNIST手写数字识别模型
2020/02/13 Python
python的sys.path模块路径添加方式
2020/03/09 Python
ALDO英国官网:加拿大女鞋品牌
2018/02/19 全球购物
中文教师求职信
2014/02/22 职场文书
物业总经理助理岗位职责
2014/06/29 职场文书
小学教师师德整改措施
2014/09/29 职场文书
护理医院见习报告
2014/11/03 职场文书
文明倡议书
2015/01/19 职场文书
浅谈Vue的computed计算属性
2022/03/21 Vue.js
vue3语法糖内的defineProps及defineEmits
2022/04/14 Vue.js