# -*- coding: utf-8 -*-
import requests
from lxml import etree
# &pn=50
class Ximage:
def __init__(self):
self.baseurl = "http://tieba.baidu.com/f?kw="
# 定義主頁url頭部信息
self.tiebaurl = "http://tieba.baidu.com"
# 定義貼吧主頁url頭部信息
self.headers={"User-Agent":"Mozilla5.0/"}
self.page=0
# 圖片個數統計
self.n=1
# 主頁url拼接用
def getHtml(self,url):
# 獲取網頁內容
res = requests.get(url,headers=self.headers)
res.encoding = "utf-8"
html = res.text
return html
def getImg(self,url):
# 獲取圖片字節流
res = requests.get(url,headers=self.headers)
res.encoding = "utf-8"
html = res.content
return html
def getBaseUrl(self,html):
# 獲取吧主 url,返回url列表
parseHtml=etree.HTML(html)
url_list = parseHtml.xpath('//div[@class="t_con cleafix"]//a[@class="j_th_tit "]/@href')
return url_list
def getImgUrl(self,html):
# 獲取吧主圖片url,返回url列表
parseHtml=etree.HTML(html)
url_list = parseHtml.xpath('//img[@changedsize="true"]/@src')
return url_list
def writePage(self,html,img_url):
# 存儲圖片
# print(self.n)
# filename=str(self.n)+".jpg"
filename=img_url[-10:]
with open(filename,'wb') as f:
f.write(html)
print("寫入第%d個圖片成功" %self.n)
f.close()
self.n+=1
def workOn(self):
# 主函數
t_name = input("請輸入貼吧名:")
while True:
url=self.baseurl+t_name+"&pn="+str(50*self.page)
# print("貼吧主頁:",url)
html=self.getHtml(url) #主頁內容
baseurl_list=self.getBaseUrl(html)#吧主url地址列表
for i in baseurl_list:
t_url=self.tiebaurl+i
# print("吧主主頁:",t_url)
t_html=self.getHtml(t_url) #吧主網頁內容
img_url_list=self.getImgUrl(t_html)#獲取吧主網頁內容圖片url列表
for img_url in img_url_list:
# print("吧主圖片鏈接",img_url)
img_html=self.getImg(img_url)#圖片內容字節流
self.writePage(img_html,img_url)#存儲圖片
print("抓取第一頁成功。")
c = input("是否繼續抓取y/n:")
if c.strip().lower()=="y":
self.page+=1
else:
print("爬取結束,謝謝使用")
break
if __name__ == "__main__":
x=Ximage()
x.workOn()
python爬取百度貼吧圖片
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.