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

  • Post author:
  • Post category:python


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

……