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

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 -------------------

......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值