# coding=utf-8
import requests
from lxml import etree
import os
import re
class TieBa(object):
"""抓取百度貼吧美女圖片"""
def __init__(self, word):
self.url = 'https://tieba.baidu.com/f?kw={}'.format(word)
self.headers = {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; TUCOWS) '
}
def get_data(self, url):
# 構造請求
response = requests.get(url, headers=self.headers)
data = response.content
# print(data)
return data
def parse_page(self, data):
"""解析資料"""
# 建立xpath物件
html = etree.HTML(data)
# 提取當前頁標題,url資料
node_list = html.xpath('//*[@id="thread_list"]/li/div/div[2]/div[1]/div[1]/a')
detail_list = []
for node in node_list:
temp = dict()
temp['title'] = node.xpath('./text()')[0]
temp['url'] = 'https://tieba.baidu.com' + node.xpath('./@href')[0]
detail_list.append(temp)
# print(temp)
# 提取下一頁連線
next_url = html.xpath('//*[@id="frs_list_pager"]/a[contains(text(), "下一頁")]/@href')[0]
next_url = 'http:' + next_url if len(next_url) > 0 else None
# print(next_url)
return detail_list, next_url
def parse_detail(self, detail_list):
"""提取詳情頁url"""
data_url = []
for detail in detail_list:
data_url.append(detail['url'])
return data_url
def save_data(self, url):
"""儲存資料"""
# 請求標題連線地址
data = self.get_data(url)
# 建立xpath物件
html = etree.HTML(data)
# print(html)
# print(url)
# 獲取圖片url
try:
image_url = html.xpath('//*[contains(@id,"post_content")]/img[1]/@src')[0]
except Exception as e:
return
print(image_url)
# 判斷圖片地址是否已jpg結尾
if re.match(r'.*\.jpg$', image_url):
# 請求圖片地址,獲取圖片
image_data = self.get_data(image_url)
filename = 'image/' + image_url.split('/')[-1]
# print(filename)
# 儲存圖片
with open(filename, 'wb') as f:
f.write(image_data)
def run(self):
# 判斷是否有image資料夾
if not os.path.exists('image'):
# 建立資料夾
os.mkdir('image')
next_url = self.url
# 請求美女吧首頁
data = self.get_data(next_url)
# 儲存首頁檔案,觀察資料,是否有需要的資料
with open('tieba.json', 'wb') as f:
f.write(data)
# 如果有下一頁就執行
while next_url:
# 獲取每頁標題和對應的連線地址
detail_list, next_url = self.parse_page(data)
# 提取每頁的詳情頁的url
data_url = self.parse_detail(detail_list)
# 遍歷每個url
for url in data_url:
# 儲存圖片
self.save_data(url)
# 構造下一頁請求
data = self.get_data(next_url)
if __name__ == '__main__':
tb = TieBa('美女')
tb.run()複製程式碼
python爬去百度美女吧圖片
相關文章
- Python爬去貼吧圖片Python
- python 爬蟲 下載百度美女圖片Python爬蟲
- 如何用Python爬蟲實現百度圖片自動下載?Python爬蟲
- Python爬蟲—爬取某網站圖片Python爬蟲網站
- 【python--爬蟲】千圖網高清背景圖片爬蟲Python爬蟲
- Python爬蟲入門【5】:27270圖片爬取Python爬蟲
- Python爬蟲學習(6): 爬取MM圖片Python爬蟲
- Python爬蟲之網頁圖片Python爬蟲網頁
- Python 實用爬蟲-04-使用 BeautifulSoup 去水印下載 CSDN 部落格圖片Python爬蟲
- Python爬蟲新手教程: 知乎文章圖片爬取器Python爬蟲
- Python爬蟲實戰詳解:爬取圖片之家Python爬蟲
- Python爬蟲入門-爬取pexels高清圖片Python爬蟲
- 新手爬蟲教程:Python爬取知乎文章中的圖片爬蟲Python
- Python爬蟲遞迴呼叫爬取動漫美女圖片Python爬蟲遞迴
- Python 爬蟲入門 (二) 使用Requests來爬取圖片Python爬蟲
- 百度地圖POI爬蟲(Python3)地圖爬蟲Python
- python 爬蟲之requests爬取頁面圖片的url,並將圖片下載到本地Python爬蟲
- Python《必應bing桌面圖片爬取》Python
- python3爬取1024圖片Python
- Python爬蟲之煎蛋網圖片下載Python爬蟲
- Python爬蟲 搜尋並下載圖片Python爬蟲
- 小小圖片爬蟲爬蟲
- Python 爬蟲零基礎教程(1):爬單個圖片Python爬蟲
- Java爬蟲批量爬取圖片Java爬蟲
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- Python應用開發——爬取網頁圖片Python網頁
- python爬蟲之圖片下載APP1.0Python爬蟲APP
- Python爬取微博資料生成詞雲圖片Python
- Python爬蟲入門【4】:美空網未登入圖片爬取Python爬蟲
- Python爬蟲入門【6】:蜂鳥網圖片爬取之一Python爬蟲
- Python爬蟲入門【7】: 蜂鳥網圖片爬取之二Python爬蟲
- Python爬蟲入門【8】: 蜂鳥網圖片爬取之三Python爬蟲
- Python網路爬蟲2 - 爬取新浪微博使用者圖片Python爬蟲
- Python批量圖片去水印,提高工作效率Python
- node:爬蟲爬取網頁圖片爬蟲網頁
- 爬蟲---xpath解析(爬取美女圖片)爬蟲
- Python資料爬蟲學習筆記(11)爬取千圖網圖片資料Python爬蟲筆記
- 使用Python爬蟲實現自動下載圖片Python爬蟲