案例:使用XPath的爬虫

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

# tieba_xpath.py#!/usr/bin/env python
# -*- coding:utf-8 -*-import os
import urllib
import urllib2
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 文档selector=etree.HTML(html)#抓取当前页面的所有帖子的url的后半部分,也就是帖子编号# http://tieba.baidu.com/p/4884069807里的 “p/4884069807”links = selector.xpath('//div[@class="threadlist_lz clearfix"]/div/a/@href')# links 类型为 etreeElementString 列表# 遍历列表,并且合并成一个帖子地址,调用 图片处理函数 loadImagefor link in links:link = "http://tieba.baidu.com" + linkself.loadImages(link)# 获取图片def loadImages(self, link):req = urllib2.Request(link, headers = self.ua_header)html = urllib2.urlopen(req).read()selector = etree.HTML(html)# 获取这个帖子里所有图片的src路径imagesLinks = selector.xpath('//img[@class="BDE_Image"]/@src')# 依次取出图片路径,下载保存for imagesLink in imagesLinks:self.writeImages(imagesLink)# 保存页面内容def writeImages(self, imagesLink):'''将 images 里的二进制内容存入到 userNname 文件中'''print imagesLinkprint "正在存储文件 %d ..." % self.userName# 1. 打开文件,返回一个文件对象file = open('./images/' + str(self.userName)  + '.png', 'wb')# 2. 获取图片里的内容images = urllib2.urlopen(imagesLink).read()# 3. 调用文件对象write() 方法,将page_html的内容写入到文件里file.write(images)# 4. 最后关闭文件file.close()# 计数器自增1self.userName += 1# 模拟 main 函数
if __name__ == "__main__":# 首先创建爬虫对象mySpider = Spider()# 调用爬虫对象的方法,开始工作mySpider.tiebaSpider()

Python案例:使用XPath的爬虫相关推荐

  1. Python——基础学习xpath(爬虫)

    python三种解析方法: 1.正则 2.bs4 3.xpath Python--xpath解析: xpath解析是最常用且最便捷高效的一种解析方法,通用性最强 xpath解析原理: 1.实例一个et ...

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

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

  3. python如何调用xpath_Python案例:使用XPath的爬虫

    案例:使用XPath的爬虫 现在我们用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子,并且将该这个帖子里每个楼层发布的图片下载到本地. # tieba_xpath.py #!/usr/ ...

  4. Python爬虫(十一)_案例:使用XPath的爬虫

    现在我们用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子且将该帖子里每个楼层发布的图片下载到本地. #-*- coding:utf-8 -*- #tieba_xpath.py" ...

  5. python爬虫xpath教程_使用 Xpath 进行爬虫开发

    使用 Xpath 进行爬虫开发 Xpath( XML Path Language, XML路径语言),是一种在 XML 数据中查找信息的语言,现在,我们也可以使用它在 HTML 中查找需要的信息. 既 ...

  6. Python案例:破译爬虫项目实践活动日期密码

    Python案例:破译爬虫项目实践活动日期密码 一.下达编程任务 寒假期间,李铁有幸成为外星人教育Python爬虫项目实践活动的参与者.外星人教育给参加活动的同学都发了一条短信,告知了实践活动日期,但 ...

  7. Python常用插件类举,lxml+Xpath实现爬虫,使用Xpath爬取链家二手房源信息

    目录 一.XPath 二.XPath 常用规则 三.在谷歌浏览器安装XPath插件 四.Python爬虫常用插件 五.使用Xpath解析 六.Xpath匹配示例 1.查看所有的标签(如p.a.li标签 ...

  8. 以下用于数据存储领域的python第三方库是-『爬虫四步走』手把手教你使用Python抓取并存储网页数据!...

    第一步:尝试请求 首先进入b站首页,点击排行榜并复制链接 https://www.bilibili.com/ranking?spm_id_from=333.851.b_7072696d61727950 ...

  9. python窗口显示表格_Python爬虫之GUI图表

    关于Python爬虫系列的这篇文章我很早就想写了,但由于我前两周一直在研究vscode插件开发方面,就没去写文章.所幸目前vscode插件开发的知识了解的差不多了,是时候写了,哈哈.需要说明的是,我并 ...

最新文章

  1. 自然语言处理-Word2Vec
  2. LeetCode 829. Consecutive Numbers Sum--笔试题--C++解法
  3. 由浅入深:自己动手开发模板引擎——置换型模板引擎(三)
  4. jsr223 java_Jmeter 组件 JSR223 使用详解
  5. 【kafka】Replication factor: 1 larger than available brokers:0
  6. python 3.3.3 字面量,正则,反斜杠和原始字符串
  7. 基于Elasticsearch 7.0 的从零开始构建知识图谱-win10测试
  8. 飞鸽传书【经典版】(飞鸽传书2011)
  9. 支持向量机原理(理解SVM的三层境界)
  10. HDU 5857 Median
  11. 游戏运行库microsoft visual c++ 2010 spi 64检测不到
  12. 分享10个超棒的设计素材网站
  13. 搭建本地服务器中遇到无法启动FTP站点问题
  14. google退出中国声明原文【翻译版】
  15. 网络安全自学入门:(超详细)从入门到精通学习路线规划,学完即可就业
  16. 462 字节 C 代码实现雅虎 logo ACSII 动画
  17. word“域”的使用方法(转)
  18. 除了刺激战场和全军出击,最近还有哪些好玩的手游值得推荐?
  19. JS利用正则快速格式化手机号
  20. MariaDB的安装步骤

热门文章

  1. 系统架构升级要不要上微服务?历“久”弥新微服务——你真的需要升级微服务架构吗
  2. kotlin设置CORS跨域资源共享,java设置允许跨域,服务端如何设置 springboot中设置跨域资源共享
  3. 2022-2028年中国PE自粘性保护膜行业市场调查研究及发展前景展望报告
  4. 2022-2028年中国瓷砖粘结剂行业市场研究及前瞻分析报告
  5. 2019秋招面试常考题目
  6. 垃圾回收 内存管理 python
  7. ARM-CPU卷积网络的自动调谐
  8. 网络模型mAP计算实现代码
  9. h264和h265多维度区别
  10. 2021年大数据ELK(二):Elasticsearch简单介绍