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 运算符 供重载参考
Jun 11 Python
pygame实现弹力球及其变速效果
Jul 03 Python
在django中使用自定义标签实现分页功能
Jul 04 Python
python绘制多个曲线的折线图
Mar 23 Python
python解析含有重复key的json方法
Jan 22 Python
python 去除二维数组/二维列表中的重复行方法
Jan 23 Python
python print出共轭复数的方法详解
Jun 25 Python
通过实例了解Python str()和repr()的区别
Jan 17 Python
Python接口开发实现步骤详解
Apr 26 Python
Python如何发送与接收大型数组
Aug 07 Python
TensorFlow2.0使用keras训练模型的实现
Feb 20 Python
使用python创建股票的时间序列可视化分析
Mar 03 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&&mysql)四
2006/10/09 PHP
PHP迅雷、快车、旋风下载专用链转换代码
2010/06/15 PHP
php 模拟POST|GET操作实现代码
2010/07/20 PHP
PHP简单的MVC框架实现方法
2015/12/01 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
懒就要懒到底——鼠标自动点击(含时间判断)
2007/02/20 Javascript
帮助避免错误的Javascript陷阱清单
2009/05/31 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
JavaScript文本框脚本编写的注意事项
2016/01/25 Javascript
js实现控制textarea输入字符串的个数,鼠标按下抬起判断输入字符数
2016/10/25 Javascript
JS实现物体带缓冲的间歇运动效果示例
2016/12/22 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
2017/02/05 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
如何在Angular2中使用jQuery及其插件的方法
2017/02/09 Javascript
JavaScript对象引用与赋值实例详解
2017/03/15 Javascript
微信JS SDK接入的几点注意事项(必看篇)
2017/06/23 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
2017/07/27 Javascript
Form表单上传文件(type="file")的使用
2017/08/03 Javascript
JS Ajax请求会话过期处理问题解决方法分析
2019/11/16 Javascript
初步认识Python中的列表与位运算符
2015/10/12 Python
python利用pandas将excel文件转换为txt文件的方法
2018/10/23 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
Python3 无重复字符的最长子串的实现
2019/10/08 Python
Win下PyInstaller 安装和使用教程
2019/12/25 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
2020/02/24 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
python三引号如何输入
2020/07/06 Python
印尼最大的网上书店:Gramedia.com
2018/09/13 全球购物
自我评价范文分享
2014/01/04 职场文书
信用社员工先进事迹材料
2014/02/04 职场文书
产品发布会策划方案
2014/05/12 职场文书
七一建党日演讲稿
2014/09/05 职场文书
对外汉语专业大学生职业生涯规划书
2014/10/11 职场文书
公积金贷款承诺书
2015/04/30 职场文书
redis通过6379端口无法连接服务器(redis-server.exe闪退)
2021/05/08 Redis
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
2021/09/25 Servers