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使用reportlab将目录下所有的文本文件打印成pdf的方法
May 20 Python
wxPython中listbox用法实例详解
Jun 01 Python
玩转python爬虫之正则表达式
Feb 17 Python
Python 一句话生成字母表的方法
Jan 02 Python
pandas删除指定行详解
Apr 04 Python
Python多叉树的构造及取出节点数据(treelib)的方法
Aug 09 Python
python__name__原理及用法详解
Nov 02 Python
python实现指定ip端口扫描方式
Dec 17 Python
python scrapy重复执行实现代码详解
Dec 28 Python
Python实现钉钉订阅消息功能
Jan 14 Python
python实现滑雪者小游戏
Feb 22 Python
关于python中模块和重载的问题
Nov 02 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操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
php查询操作实现投票功能
2016/05/09 PHP
Javascript 通过json自动生成Dom的代码
2010/04/01 Javascript
使用jquery的ajax需要注意的地方dataType的设置
2013/08/12 Javascript
js 获取、清空input type="file"的值(示例代码)
2013/12/24 Javascript
angular简介和其特点介绍
2015/01/29 Javascript
js实现漂浮回顶部按钮实例
2015/05/06 Javascript
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
jquery实现图片放大镜功能
2015/11/23 Javascript
基于Node.js的JavaScript项目构建工具gulp的使用教程
2016/05/20 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
2016/11/18 Javascript
ionic开发中点击input时键盘自动弹出
2016/12/23 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
jQuery Datatable 多个查询条件自定义提交事件(推荐)
2017/08/24 jQuery
bootstrap模态框嵌套、tabindex属性、去除阴影的示例代码
2017/10/17 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
PyQt5每天必学之布局管理
2018/04/19 Python
Python使用add_subplot与subplot画子图操作示例
2018/06/01 Python
python 不以科学计数法输出的方法
2018/07/16 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
TensorFlow实现保存训练模型为pd文件并恢复
2020/02/06 Python
关于Python 中的时间处理包datetime和arrow的方法详解
2020/03/19 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
2020/06/23 Python
Python 找出英文单词列表(list)中最长单词链
2020/12/14 Python
python使用scapy模块实现ping扫描的过程详解
2021/01/21 Python
网吧最新创业计划书范文
2014/03/27 职场文书
区政府领导班子个人对照检查材料
2014/09/25 职场文书
2015年度信用社工作总结
2015/05/04 职场文书
2016廉洁教育心得体会
2016/01/20 职场文书
CSS3新特性详解(五):多列columns column-count和flex布局
2021/04/30 HTML / CSS
如何在向量化NumPy数组上进行移动窗口
2021/05/18 Python
Python Pandas pandas.read_sql函数实例用法
2021/06/21 Python