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基础教程之循环介绍
Aug 29 Python
python实现基本进制转换的方法
Jul 11 Python
Python编程给numpy矩阵添加一列方法示例
Dec 04 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
Mar 23 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
May 04 Python
Python使用wget实现下载网络文件功能示例
May 31 Python
Django实现发送邮件功能
Jul 18 Python
Python使用import导入本地脚本及导入模块的技巧总结
Aug 07 Python
python list多级排序知识点总结
Oct 23 Python
python 爬取古诗文存入mysql数据库的方法
Jan 08 Python
python中zip()函数遍历多个列表方法
Feb 18 Python
七个Python必备的GUI库
Apr 27 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
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
2013/06/06 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
2015/04/09 PHP
smarty模板判断数组为空的方法
2015/06/10 PHP
php成功操作redis cluster集群的实例教程
2019/01/13 PHP
javascript 继承实现方法
2009/08/26 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
2013/06/19 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
基于jQuery.i18n实现web前端的国际化
2018/05/04 jQuery
解决微信小程序防止无法回到主页的问题
2018/09/28 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
JavaScript获取当前url路径过程解析
2019/12/27 Javascript
javascript实现下拉菜单效果
2021/02/09 Javascript
[56:14]Fnatic vs OG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
跟老齐学Python之眼花缭乱的运算符
2014/09/14 Python
Python基于DES算法加密解密实例
2015/06/03 Python
python实现二分查找算法
2017/09/21 Python
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
python中设置超时跳过,超时退出的方式
2019/12/13 Python
python Shapely使用指南详解
2020/02/18 Python
Python virtualenv虚拟环境实现过程解析
2020/04/18 Python
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
青年文明号复核材料
2014/02/11 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
2015年数学教师工作总结
2015/05/20 职场文书
贷款工资证明范本
2015/06/12 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
优秀创业计划书分享
2019/07/19 职场文书
golang三种设计模式之简单工厂、方法工厂和抽象工厂
2022/04/10 Golang