现在我们用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子且将该帖子里每个楼层发布的图片下载到本地。

#-*- coding:utf-8 -*-
#tieba_xpath.py"""作用:本案例使用XPath做一个简单的爬虫,我们尝试爬去某个贴吧的所有帖子
"""import os
import urllib2
import urllib
from lxml import etreeclass Spider:def __init__(self):self.tiebaName = raw_input("请输入需要访问的贴吧: ")self.beginPage = int(raw_input("请输入起始页: "))self.endPage = int(raw_input("请输入终止页: "))self.url = "http://tieba.baidu.com/f"self.ua_header = {"User-Agent":"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1 Trident/5.0;"}#图片编号self.userName = 1def tiebaSpider(self):for page in range(self.beginPage, self.endPage+1):pn = (page-1) * 50   #page numberword = {'pn':pn, 'kw':self.tiebaName}word = urllib.urlencode(word)   #转换成url编码格式(字符串)myUrl = self.url + "?" + word#示例:http://tieba.baidu.com/f?kw=%E7%BE%8E%E5%A5%B3 & pn=50#调用 页面处理函数load_Page#并且获取页面所有帖子链接links = self.loadPage(myUrl)  #urllib2_test3.py#获取页面内容def loadPage(self, url):req = urllib2.Request(url, headers = self.ua_header)html = urllib2.urlopen(req).read()#解析html为HTML DOM文档selector = etree.HTML(html)#抓取当前页面的所有帖子的url的后半部分,也就是帖子编号#http://tieba.baidu.com/p/4884069807里的"p/4884069807"links = selector.xpath('//div[@class="threadlist_lz clearfix"]/div/a[@rel="noreferrer"]/@href')#links类型为etreeElementString列表#遍历列表,并且合并为一个帖子地址,调用图片处理函数loadImagefor link in links:link = "http://tieba.baidu.com" + linkself.loadImage(link)#获取图片def loadImage(self, link):req = urllib2.Request(link, headers = self.ua_header)html = urllib2.urlopen(req).read()selector = etree.HTML(html)#获取这个帖子里面所有图片的src路径imageLinks = selector.xpath('//img[@class="BDE_Image"]/@src')#依次取出图片路径,下载保存for imageLink in imageLinks:self.writeImages(imageLink)#保存页面内容def writeImages(self, imageLink):"""将images里的二进制内容存入到userName文件中"""print(imageLink)print "正在存储文件 %d..."%self.userName#1.打开一个文件,返回一个文件对象file = open('./images/'+str(self.userName) + '.png', 'wb')#获取图片里内容images = urllib2.urlopen(imageLink).read()#调用文件对象write()方法,将page_html的内容写入到文件里
        file.write(images)#最后关闭文件
        file.close()#计数器自增1self.userName += 1#模拟__main__函数:
if __name__ == '__main__':#首先创建爬虫对象mySpider = Spider()#调用爬虫对象的方法,开始工作mySpider.tiebaSpider()



转载于:https://www.cnblogs.com/moying-wq/p/11569992.html

Python爬虫(十一)_案例:使用XPath的爬虫相关推荐

  1. python爬虫正则表达式实例-Python爬虫(十一)_案例:使用正则表达式的爬虫

    本章将结合先前所学的爬虫和正则表达式知识,做一个简单的爬虫案例,更多内容请参考:Python学习指南 现在拥有了正则表达式这把神兵利器,我们就可以进行对爬取到的全部网页源代码进行筛选了. 打开之后,不 ...

  2. python二手交易平台代码_PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二手急速响应捡垃圾平台_3(附源码持续更新)...

    说明 文章首发于HURUWO的博客小站,本平台做同步备份发布. 如有浏览或访问异常图片加载失败或者相关疑问可前往原博客下评论浏览. 原文链接 PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二 ...

  3. Python爬虫(十三)_案例:使用XPath的爬虫

    本篇是使用XPath的案例,更多内容请参考:Python学习指南 案例:使用XPath的爬虫 现在我们用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子且将该帖子里每个楼层发布的图片下载 ...

  4. python分布式爬虫系统_如何构建一个分布式爬虫:理论篇

    前言 本系列文章计划分三个章节进行讲述,分别是理论篇.基础篇和实战篇.理论篇主要为构建分布式爬虫而储备的理论知识,基础篇会基于理论篇的知识写一个简易的分布式爬虫,实战篇则会以微博为例,教大家做一个比较 ...

  5. nodejs爬虫实战_简单高效的 nodejs 爬虫模型

    这篇文章讲解一下yunshare项目的爬虫模型. 使用 nodejs 开发爬虫很简单,不需要类似 python 的 scrapy 这样的爬虫框架,只需要用 request 或者 superagent ...

  6. Python爬虫(九)_案例:使用正则表达式的爬虫

    现在拥有了正则表达式这把神兵利器,我们就可以进行对爬取到的全部网页源代码进行筛选了. 下面我们一起尝试一下爬取内涵段子网站: http://www.neihan8.com/article/list_5 ...

  7. python编程入门与案例详解pdf-Python爬虫天气预报实例详解(小白入门)

    本文研究的主要是Python爬虫天气预报的相关内容,具体介绍如下. 这次要爬的站点是这个:http://www.weather.com.cn/forecast/ 要求是把你所在城市过去一年的历史数据爬 ...

  8. python回归预测例子_案例实战 | 逻辑回归实现客户流失预测(附Python代码与源数据)...

    关注一下~,更多商业数据分析案例等你来撩 前言 利用逻辑回归进行客户流失预警建模中涵盖了许多比较细的知识点,思维导图只展示了极小的一部分,相关知识点链接将穿插在文中.(源数据源代码空降文末获取) 数据 ...

  9. python多进程 保活_老板,你这个爬虫保活吗?

    点击上方"咸鱼学Python",选择"加为星标" 第一时间关注Python技术干货! 作者:wsgao 原文:https://wsgzao.github.io/ ...

最新文章

  1. web本地存储-IndexedDB
  2. java 选择 颜色的控件_JavaFX颜色选择器(ColorPicker)
  3. MATLAB从入门到精通系列之几个实用小技巧
  4. 使用@host获得宿主元素注入器里注入的内容
  5. 前端学习(2015)vue之电商管理系统电商系统之实现图片的预览效果
  6. oracle load select,Oracle数据库的Load详解
  7. python 单位根检验代码_python时间序列分析
  8. 【AC】九度OJ题目1153:括号匹配问题
  9. mac python 图_Python之图片OCR识别(Mac)
  10. 直观讲解Matlab的im2col函数
  11. 分享PHP获取客户端IP的几种不同方式
  12. Matlab 2010b再次打开安装问题
  13. python程序加密狗_加密狗 超级狗 加密程序 程序授权示例 程序授权验证
  14. Adobe Premiere Pro CC教程笔记
  15. R plot图片背景设置为透明_数据科学06 | R语言程序设计模拟和R分析器
  16. PHP教程电子版下载
  17. CAT 实时监控与项目集成
  18. android客户端框架,最新的一版,通用Android 客户端架构设计,只有你还没看过
  19. RocketMQ学习笔记:基础知识和安装启动
  20. python里find是什么函数_Python find函数用法和概念

热门文章

  1. 【网络流24题】试题库问题
  2. .NET中的IO操作基础介绍
  3. 微软System Center 2012推进私有云计算
  4. Oracle入门心得(2)
  5. ProGit-读书简记
  6. Fast RCNN 训练自己的数据集(3训练和检测)
  7. face key point with 7 points
  8. 使用ABAP(ADBC)和Java(JDBC)连接SAP HANA数据库
  9. IIS7 Request format is unrecognized.
  10. XenApp_XenDesktop_7.6实战篇之九:SQL Server数据库服务器规划及部署