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根据开头和结尾字符串获取中间字符串的方法
Mar 26 Python
python实现爬取千万淘宝商品的方法
Jun 30 Python
python解决方案:WindowsError: [Error 2]
Aug 28 Python
Python排序搜索基本算法之插入排序实例分析
Dec 11 Python
pandas数据清洗,排序,索引设置,数据选取方法
May 18 Python
Python爬虫实战之12306抢票开源
Jan 24 Python
python3.6 tkinter实现屏保小程序
Jul 30 Python
在Python中使用MongoEngine操作数据库教程实例
Dec 03 Python
Python CSV文件模块的使用案例分析
Dec 21 Python
python实现在线翻译功能
Mar 03 Python
Python MOCK SERVER moco模拟接口测试过程解析
Apr 13 Python
Python机器学习之KNN近邻算法
May 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导出oracle库的php代码
2009/04/20 PHP
PHP中include与require使用方法区别详解
2013/10/19 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
2015/12/25 PHP
PHP实现数组array转换成xml的方法
2016/07/19 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
jQuery选中select控件 无法设置selected的解决方法
2010/09/01 Javascript
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
javascript写的简单的计算器,内容很多,方法实用,推荐
2011/12/29 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
js禁止页面刷新禁止用F5键刷新禁止右键的示例代码
2013/09/23 Javascript
jQuery实现长按按钮触发事件的方法
2015/02/02 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
node.js入门实例helloworld详解
2015/12/23 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
简单实现js悬浮导航效果
2017/02/05 Javascript
NodeJS配置HTTPS服务实例分享
2017/02/19 NodeJs
Nodejs--post的公式详解
2017/04/29 NodeJs
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
vue项目实现减少app.js和vender.js的体积操作
2020/11/12 Javascript
pymssql ntext字段调用问题解决方法
2008/12/17 Python
python:socket传输大文件示例
2017/01/18 Python
Python之re操作方法(详解)
2017/06/14 Python
Python+tkinter使用80行代码实现一个计算器实例
2018/01/16 Python
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
python实现飞机大战游戏
2020/10/26 Python
python数字类型math库原理解析
2020/03/02 Python
美国最大最全的亚洲购物网站:美国亚米网(Yamibuy)
2020/05/05 全球购物
司机工作自我鉴定
2014/09/19 职场文书
小学课改工作总结
2015/08/13 职场文书
谢师宴家长答谢词
2015/09/30 职场文书
浅谈如何提高PHP代码的质量
2021/05/28 PHP
Java使用JMeter进行高并发测试
2021/11/23 Java/Android
Golang 实现WebSockets
2022/04/24 Golang