8586231_192932724000_2.jpg

#百度贴吧图片爬虫

# 爬取步骤:1.基础设置,2.构造url,3.爬取页面,4.解析页面,5.保存页面

# 采取urllib爬取

#引入必要的包

import urllib

import urllib.request

from lxml import etree

#定义一个类存入必要的基础数据

class Spider():

def __init__(self):

self.beginpage=1

self.endpage=3

self.tiebaname='java'

self.url="http://tieba.baidu.com/f?"

self.headers={"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1 Trident/5.0;"}

self.filename=1

#定义构造url的函数

def tiebaSpider(self):#驼峰命名法

for i in range(self.beginpage,self.endpage+1):

#分析网页

#第二页http://tieba.baidu.com/f?kw=java&ie=utf-8&pn=50

#第三页http://tieba.baidu.com/f?kw=java&ie=utf-8&pn=100

#构造get请求参数

pn=(i-1)*50

wd={'pn':pn , 'kw':self.tiebaname}

word=urllib.parse.urlencode(wd)

#拼接完整的url

urll=self.url+word

#调用爬取页面函数

self.loadPage(urll)

#定义爬取页面url

def loadPage(self,url):

response=urllib.request.Request(url,headers=self.headers)

data=urllib.request.urlopen(response).read()#返回2进制形式的页面信息

# print(data)

#用xpath前期处理出链接信息拼接帖子的地址

html=etree.HTML(data)

#

#

# 刚来公司跟不上啊,怎么办呢,又没有大佬分享一下经验

links=html.xpath('//div[@class="threadlist_lz clearfix"]/div/a/@href')

for link in links:

# print(link)

#拼接url

link="http://tieba.baidu.com"+link

# 调用解析页面函数

self.loadImage(link)

#定义图片解析链接的函数

def loadImage(self,link):

req=urllib.request.Request(link,headers=self.headers)

data1=urllib.request.urlopen(req).read()

html=etree.HTML(data1)

#用xpath表达式解析出图片

#其中一个图片的网页信息

#

imagelinks=html.xpath('//img[@class="BDE_Image"]/@src')

for imagelink in imagelinks:

#调用保存图片函数,将解析出的图片存入本地

self.writeImage(imagelink)

def writeImage(self,imagelink):

print("正在保存图片",self.filename,"-------------------")

image=urllib.request.urlopen(imagelink).read()

with open(r"E:\img\\"+str(self.filename)+".jpg","wb") as f:

f.write(image)

self.filename+=1

#最后调用执行整个代码

if __name__=='__main__':

spider=Spider()

spider.tiebaSpider()

......

正在保存图片 137 -------------------

正在保存图片 138 -------------------

正在保存图片 139 -------------------

正在保存图片 140 -------------------

正在保存图片 141 -------------------

正在保存图片 142 -------------------

正在保存图片 143 -------------------

......

python爬取百度贴吧xpath_爬虫基础系列xpath实战——爬取百度贴吧图片(3)相关推荐

  1. 网络爬虫--12.【XPath实战】获取百度贴吧中的图片

    用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子,并且将该这个帖子里每个楼层发布的图片下载到本地. #coding=utf-8 import requests from lxml im ...

  2. python爬虫酷狗_python爬虫教程:爬取酷狗音乐,零基础小白也能爬取哦

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:python学习教程 ( 想要学习Python?Pyt ...

  3. python爬取大众点评数据_python爬虫实例详细介绍之爬取大众点评的数据

    python 爬虫实例详细介绍之爬取大众点评的数据 一. Python作为一种语法简洁.面向对象的解释性语言,其便捷性.容易上手性受到众多程序员的青睐,基于python的包也越来越多,使得python ...

  4. python爬虫教程:爬取酷狗音乐,零基础小白也能爬取哦

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:python学习教程 ( 想要学习Python?Pyt ...

  5. Python网络爬虫基础进阶到实战教程

    文章目录 认识网络爬虫 HTML页面组成 Requests模块get请求与实战 效果图 代码解析 Post请求与实战 代码解析 发送JSON格式的POST请求 使用代理服务器发送POST请求 发送带文 ...

  6. 爬虫基础篇之Scrapy抓取京东

    虚拟环境 同一台服务器上不同的项目可能依赖的包不同版本,新版本默认覆盖旧版本,可能导致其他项目无法运行,通过虚拟环境,完全隔离各个项目各个版本的依赖包,实现运行环境互不影响. virtualenv p ...

  7. Python编程:从入门到实践+爬虫开发与项目实战+网络编程基础+项目开发实战

    给还在苦苦自学Python的小伙伴们分享一波学习教程~有了它们,至少能节省50%的时间,少走一半的弯路. 书不在多,而在于精~ <Python编程:从入门到实践>豆瓣评分9.2 本书是针对 ...

  8. python全栈工程师 pdf_python全栈工程师项目开发实例实战入门教程百度云

    python全栈工程师项目开发实例实战入门教程百度云 课程目录: 开学典礼 pycharm的基本使用 Python基本语法 数值类型数据及运算 字符串的基本操作 字符串的常用方法 列表的基本使用 列表 ...

  9. python xpath语法-Python爬虫基础之XPath语法与lxml库的用法详解

    前言 本来打算写的标题是XPath语法,但是想了一下Python中的解析库lxml,使用的是Xpath语法,同样也是效率比较高的解析方法,所以就写成了XPath语法和lxml库的用法 XPath 即为 ...

最新文章

  1. div 隐藏_CSS实现六边形Div图片展示效果
  2. label标签 html5,HTML5 label 标签
  3. 计算机A级作文,关于被计算机的作文(共一篇)-疾风作文网
  4. 深度剖析 | 初学者应该如何学习前端?该怎么学?
  5. [C++]Linux之C编程异常[true未定义解决方案]
  6. 7.2.5 dps 测试软件,dps排行榜网站_7.1.5dps排行榜分享DPS模拟常见上榜翻译2
  7. LoadRunner教程(19)-LoadRunner 性能图表分析
  8. android相机固定焦距,如何找到Android相机的焦距?
  9. 纯干货:微软漏洞中国第一人黄正——如何用正确姿势挖掘浏览器漏洞(附完整 PPT)
  10. LVGL (8) 绘制流程
  11. JTAG-SWD转接
  12. 股 市 运 作 原 理
  13. Petalinux-conifg 错误失败
  14. 未来挣钱的行业有哪些,这3个项目有前景
  15. HEX和BIN文件的区别
  16. Spring WebFlux运用中的思考与对比
  17. java启动监听器报错_初识 Java-监听器
  18. CSDN的第一篇文章——聊聊股市
  19. 会计基础:一个具体的简单的会计核算过程
  20. 99行代码实现go IOC容器

热门文章

  1. 为什么要两次调用encodeURI来解决乱码问题
  2. AQO.NET实现数据操作封装
  3. 产品入门十——互联网产品的交互设计
  4. 【BZOJ-4245】OR-XOR 按位贪心
  5. Java生成CSV文件
  6. Implementation:Bellman-ford
  7. 设备文件的创建mknod
  8. 简单判断用户重复登录,记录一下
  9. java table修改指定行_(变强、变秃)Java从零开始之JQuery购物车功能实操
  10. java arraylist初始大小_Java - ArrayList默认初始值