日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python 爬虫案例:爬取百度贴吧图片

發(fā)布時(shí)間:2024/1/18 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 爬虫案例:爬取百度贴吧图片 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章更新于:2020-04-24
注1:打包后的程序(無(wú)需python環(huán)境)下載參見(jiàn):https://ww.lanzous.com/ibvwref
注2:更多爬蟲(chóng)案例參見(jiàn):https://github.com/amnotgcs/SpiderCase

一、分析

1.1、程序流程分析

1、從用戶接收一個(gè)字符串
2、判斷是否存在該貼吧
3、如果存在解析總頁(yè)數(shù),并接收兩個(gè)數(shù)字作為提取圖片的頁(yè)數(shù)
4、循環(huán)保存圖片

1.2、技術(shù)分析

1、貼吧超鏈接為 https://tieba.baidu.com/f?ie=utf-8&kw=關(guān)鍵字&pn=頁(yè)數(shù)x50
2、所以我們從用戶接收關(guān)鍵字、頁(yè)數(shù)即可。
3、進(jìn)入貼吧后,我們可以查看源碼發(fā)現(xiàn)每頁(yè)有 50 個(gè)帖子,超連接為 https://tieba.baidu.com/p/頁(yè)面ID
4、所以我們從當(dāng)前頁(yè)面檢索出所有的頁(yè)面 ID ,然后自己構(gòu)造 URL 進(jìn)行訪問(wèn)即可。
5、進(jìn)入帖子頁(yè)面后,我們可以發(fā)現(xiàn)圖片的超連接都在 BDE_Image 類的 a 標(biāo)簽里面

6、所以我們直接提取這個(gè) a 標(biāo)簽的 href 屬性使用 urllib.request.urlretrieve 進(jìn)行保存即可。
7、其他細(xì)節(jié)根據(jù)需要進(jìn)行完善。

二、源代碼

import requests import urllib.request import urllib.parse from bs4 import BeautifulSoup from os import mkdirdef setKeyword():# 構(gòu)造帶參 URLurl_prefix = "https://tieba.baidu.com/f?"# 確定是否存在該吧print("\n\n\t\t歡迎使用百度貼吧圖片檢索程序 v1.0")print("\n\n\t\t程序更新于:2020-04-24 by amnotgcs")keyword = input("\n\n\t\t請(qǐng)輸入你要檢索的貼吧名:")url = "%sid=utf-8&kw=%s"%(url_prefix, urllib.parse.quote(keyword))response = requests.get(url)soup = BeautifulSoup(response.text, 'html.parser')confirmName = soup.find('a', class_ = 'card_title_fname')if confirmName:# 輸出貼吧名print("\t\t已匹配:",confirmName.string.strip())else:print("\t\t該吧不存在")return NonemaxPage = soup.find('a', class_ = "last pagination-item")['href'].split("=")[-1]maxPage = int(maxPage) // 50 +1print("\n\t\t總共檢索到 %d 頁(yè)"%maxPage)pageNum = int(input("\t\t請(qǐng)輸入你想要獲取的開(kāi)始頁(yè)數(shù):"))pageNumEnd = int(input("\t\t請(qǐng)輸入你想要獲取的結(jié)束頁(yè)數(shù):"))pageList = []if pageNumEnd - pageNum >= 0:while pageNumEnd >= pageNum:params = {'ie':'utf-8','kw': keyword,'pn': (pageNum-1)*50}url = url_prefix + urllib.parse.urlencode(params)pageList.append(url)pageNum += 1return pageListelse:return Nonedef get_html(url = ""):if not url:return None# 獲取網(wǎng)頁(yè)源碼response = requests.get(url)html_doc = response.text# 調(diào)用解析函數(shù)logString = "\n" + "-"*30 + "\n下面是:%s\n"%url + "-"*30 + "\n" To_log(logString)analyseHtml(html_doc)def analyseHtml(html_doc = ""):if not html_doc:return None# 進(jìn)行解析soup = BeautifulSoup(html_doc, 'html.parser')entries = soup.find_all('a')entries = soup.find_all('a', class_ = 'j_th_tit')print("\n\n帖子位置:\t\t 主題:")for item in entries:logString = "\n%s\t%s"%(item['href'],item.string)To_log(logString)entryUrl = "https://tieba.baidu.com" + item['href']# 定義圖片名使用的前綴,防止覆蓋pageID = item['href'].split("/")[-1]getImage(entryUrl, pageID)def getImage(url, pageID):if not url:return Nonetry:response = requests.get(url)soup = BeautifulSoup(response.text, 'html.parser')except:print("\n", url, "好像出錯(cuò)了哦~")return None# 定位圖片tags = soup.find_all('img', class_ = 'BDE_Image')if len(tags):logString = "\t\t||||||||||發(fā)現(xiàn)目標(biāo): %d 個(gè)圖片"%len(tags)To_log(logString)else:return Noneglobal imgCountfor item in tags:try:urllib.request.urlretrieve(item['src'], r"./tiebaImg/%s_%d.jpg"%(pageID, imgCount))except:print("\n此圖片保存失敗", end = "")imgCount += 1def To_log(data):with open('tiebaImg/result.txt', 'a', encoding = 'utf-8')as file:file.write(data)print(data, end = "")def main():global imgCountimgCount = 0try:with open("tiebaImg/result.txt", 'w', encoding = 'utf-8')as file:file.write("程序正常開(kāi)始")except:mkdir("tiebaImg")print("已經(jīng)創(chuàng)建 tiebaImg 文件夾")pageList = setKeyword()if pageList:for page in pageList:get_html(page)print("\n", "="*60, "\n\t\t共獲取 %d 圖片"%imgCount)print("\t\t圖片保存在程序所在目錄 tiebaImg 文件夾內(nèi)!")else:print("\t\t好像發(fā)現(xiàn)了什么奇怪了東西~")end = input("\n\t\t按回車鍵結(jié)束關(guān)閉窗口~")if __name__ == '__main__':main()

三、運(yùn)行截圖

3.1、運(yùn)行截圖:

3.2、運(yùn)行結(jié)果:

四、Enjoy!

總結(jié)

以上是生活随笔為你收集整理的python 爬虫案例:爬取百度贴吧图片的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美一级艳片视频免费观看 | 91久久在线观看 | 色臀av| 九色蝌蚪porny | 亚洲成人免费在线视频 | 国产在线视频不卡 | 国产人妻黑人一区二区三区 | 欲色av| 丰满熟女人妻一区二区三 | 潘金莲一级淫片aaaaa武则天 | 国产区一二 | 男女互操| 毛片的网址 | 国产精品破处 | 波多野结衣一二三区 | 91久久一区 | 精品久久久久久中文字幕 | 蜜桃视频导航 | 日本免费三片在线播放 | 国产美女www爽爽爽 www.国产毛片 | 久久久在线观看 | 欧美一级黄色大片 | 亚洲 欧美 成人 | 国产精品美女在线观看 | 亚洲美女视频一区 | 国产性猛交xxxx免费看久久 | 亚洲国产精品无码久久久久高潮 | 国产亚洲精品久久久久动 | 欧美精品一区二区三区三州 | 欧美色女人 | 久本草精品| 午夜寂寞院 | 伊人青青 | 手机av在线播放 | 免费日韩精品 | 久久精品国产精品亚洲色婷婷 | bl动漫在线观看 | 国产亚洲天堂网 | 中文字幕中文字幕 | 美女色综合| 亚洲va欧美va天堂v国产综合 | 久久精品大全 | 拍真实国产伦偷精品 | 国产一区二区三区视频免费观看 | 天堂√在线 | 欧美xxxxx视频 | 国产视频一区二区三区在线播放 | 97精品人妻一区二区三区 | 亚洲成人一区 | 豆花免费跳转入口官网 | 可以看的av网站 | 精品日韩一区 | 美女精品网站 | 成人精品一区二区三区电影 | 最新91在线| 亚洲精品中文字幕乱码无线 | 精品欧美久久 | 成人小视频在线 | 瑟瑟网站免费 | 爱爱网视频 | 久久国产精品精品国产色婷婷 | 真实的国产乱xxxx在线91 | 亚洲国产va| 男人的天堂色偷偷 | 蜜桃成人av | 亚洲精品观看 | 中文字幕国产日韩 | 超碰人人网 | 污污内射在线观看一区二区少妇 | 色哥网| 午夜涩涩| 国产第一草草影院 | 久久久久久免费 | 欧美z○zo重口另类黄 | 国产主播专区 | 麻豆一区二区三区四区 | 高清免费av| 哈利波特3在线观看免费版英文版 | 久久精品国产亚洲AV无码男同 | 狠狠操狠狠操狠狠操 | 91麻豆视频在线观看 | 日韩av大全| 五月婷婷视频在线观看 | 久草视频免费在线观看 | 中国一级片黄色一级片黄 | 久久久噜噜噜www成人网 | 伊人久久中文字幕 | a级一片| 在线v| 最好看的mv中文字幕国语电影 | 一区二区视频在线播放 | 成人久久精品人妻一区二区三区 | 大伊人久久 | 69一区二区| 亚洲欧美自拍另类 | 全国最大色 | 欧美一区二区区 | 奇米在线播放 | 成人高潮片免费视频 |