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 SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
May 06 Python
python 字典(dict)遍历的四种方法性能测试报告
Jun 25 Python
Python实现一个简单的MySQL类
Jan 07 Python
python连接远程ftp服务器并列出目录下文件的方法
Apr 01 Python
Python中super关键字用法实例分析
May 28 Python
Python基于PycURL自动处理cookie的方法
Jul 25 Python
Python如何判断数独是否合法
Sep 08 Python
PyQt QListWidget修改列表项item的行高方法
Jun 20 Python
Python学习笔记之字符串和字符串方法实例详解
Aug 22 Python
python 定义类时,实现内部方法的互相调用
Dec 25 Python
4行Python代码生成图像验证码(2种)
Apr 07 Python
Python使用Web框架Flask开发项目
Jun 01 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
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
2014/06/30 PHP
jQuery中queue()方法用法实例
2014/12/29 Javascript
javascript将异步校验表单改写为同步表单
2015/01/27 Javascript
jquery实现的代替传统checkbox样式插件
2015/06/19 Javascript
javascript用正则表达式过滤空格的实现代码
2016/06/14 Javascript
javascirpt实现2个iframe之间传值的方法
2016/06/30 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
JS数组操作之增删改查的简单实现
2017/08/21 Javascript
Angularjs之ngModel中的值验证绑定方法
2018/09/13 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
[07:54]DOTA2-DPC中国联赛 正赛 iG vs VG 选手采访
2021/03/11 DOTA
python字符串替换的2种方法
2014/11/30 Python
python爬虫入门教程--优雅的HTTP库requests(二)
2017/05/25 Python
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
python3.7.0的安装步骤
2018/08/27 Python
python跳出双层for循环的解决方法
2019/06/24 Python
Python中包的用法及安装
2020/02/11 Python
Python reduce函数作用及实例解析
2020/05/08 Python
python处理写入数据代码讲解
2020/10/22 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
Carmen Sol官网:购买果冻鞋、手袋和配件
2021/01/01 全球购物
运动会入场式解说词
2014/02/18 职场文书
大学生怎样写好自荐信
2014/02/25 职场文书
软件专业毕业生个人自我鉴定
2014/04/17 职场文书
师范类求职信
2014/06/21 职场文书
成本会计岗位职责
2015/02/03 职场文书
工会积极分子个人总结
2015/03/03 职场文书
大学生自荐信范文
2015/03/05 职场文书
停电通知范文
2015/04/16 职场文书
公司捐书倡议书
2015/04/27 职场文书
pytorch实现线性回归以及多元回归
2021/04/11 Python