摘要:在上一篇文章的基礎(chǔ)上增加獲取百度貼吧的頭像圖片的功能,使用到的技術(shù)為,,具體實現(xiàn)如下查看網(wǎng)頁源代碼測試網(wǎng)頁鏈接通過定位頭像的的代碼每一樓層的標(biāo)簽是從樓層開始,直到定位到照片順序應(yīng)該是提取信息通過一步步獲取到這一層,提取到這個標(biāo)簽中的就可以獲
在上一篇文章的基礎(chǔ)上增加獲取百度貼吧的頭像圖片的功能,使用到的技術(shù)為XPath,Requests,具體實現(xiàn)如下:
1. 查看網(wǎng)頁源代碼
測試網(wǎng)頁鏈接:http://tieba.baidu.com/p/3522395718?pn=1 通過Chrome定位頭像的HTML的代碼
每一樓層的標(biāo)簽是:
class="l_post j_l_post l_post_bright "
從樓層開始,直到定位到照片順序應(yīng)該是
2. 提取XPath信息
通過XPath一步步獲取到這一層,提取到這個標(biāo)簽中的src就可以獲取到圖片的url
ImgLink = ImgFilter.xpath("http://div[@class="l_post j_l_post l_post_bright "]")[0] links = ImgLink.xpath("http://div[@class="d_author"]/ul/li/div[@class="icon_relative j_user_card"]/a/img/@data-tb-lazyload")
這里會遇到一個問題,如果第二個XPath的條件是/img/@src則會遇到一個問題:
使用requests獲取到的html會有很多空白的頭像
"http://tb2.bdstatic.com/tb/static-pb/img/head_80.jpg"
這是因為網(wǎng)頁是分步加載的,首先使用默認(rèn)的頭像展示,再逐步下載自定義頭像替換,因此還要得到自定義頭像的地址,通過分析網(wǎng)頁代碼,可以發(fā)現(xiàn):
“data-tb-lazyload”這個才是真正的自定義頭像的鏈接地址
3. 去掉獲取到的鏈接中的重復(fù)值
由于貼吧的不同的樓層是有可能是同一個人,即同一個頭像的;為了節(jié)省空間,我們要去除掉重復(fù)的圖像,在Python中可以通過函數(shù)set()去除列表重復(fù)值
links = list(set(links))
測試一下:
print("before set list:{0}".format(len(links))) links = list(set(links)) print("after set list:{0}".format(len(links)))
測試結(jié)果:
before set list:27 after set list:21
成功消除掉了重復(fù)的鏈接
4.將鏈接存儲到j(luò)peg文件
Requests庫中包含了獲取數(shù)據(jù)的方法get(),可以使用該方法將鏈接存儲到文件中
with open("img{0}.jpeg".format(i),"wb") as code: code.write(graphic.content)
完整程序(可直接使用)
#-*-coding:utf8-*- from lxml import etree import requests import re def GetImgLink(url): html = requests.get(url) html = re.sub(r"charset=(/w*)", "charset=UTF-8", html.text) ImgFilter = etree.HTML(html) ImgLink = ImgFilter.xpath("http://div[@class="l_post j_l_post l_post_bright "]")[0] links = ImgLink.xpath("http://div[@class="d_author"]/ul/li/div[@class="icon_relative j_user_card"]/a/img/@data-tb-lazyload") #links = ImgLink.xpath("http://div[@class="d_author"]/ul/li/div[@class="icon_relative j_user_card"]/a/img/@src") print(links) print("before set list:{0}".format(len(links))) links = list(set(links)) print("after set list:{0}".format(len(links))) i = 0 for each_link in links: graphic = requests.get(each_link) with open("img{0}.jpeg".format(i),"wb") as code: code.write(graphic.content) i = i + 1 pagelink = "http://tieba.baidu.com/p/3522395718?pn=1" GetImgLink(pagelink)
測試結(jié)果:
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/45413.html
摘要:時間永遠(yuǎn)都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
摘要:今天為大家整理了個爬蟲項目。地址新浪微博爬蟲主要爬取新浪微博用戶的個人信息微博信息粉絲和關(guān)注。代碼獲取新浪微博進(jìn)行登錄,可通過多賬號登錄來防止新浪的反扒。涵蓋鏈家爬蟲一文的全部代碼,包括鏈家模擬登錄代碼。支持微博知乎豆瓣。 showImg(https://segmentfault.com/img/remote/1460000018452185?w=1000&h=667); 今天為大家整...
摘要:因為要做去轉(zhuǎn)盤網(wǎng),所以一定要爬取網(wǎng)盤資源,本來想自己寫一個爬蟲挺不容易的,不想分享出來,但最后還是決定了拿給大家一起看吧,畢竟有交流才有進(jìn)步,有興趣的朋友也可以看看我寫的其他日志或者關(guān)注我,會發(fā)現(xiàn)去轉(zhuǎn)盤網(wǎng)的大部分技術(shù)現(xiàn)在可以說是公開狀態(tài),如 因為要做去轉(zhuǎn)盤網(wǎng),所以一定要爬取網(wǎng)盤資源,本來想自己寫一個爬蟲挺不容易的,不想分享出來,但最后還是決定了拿給大家一起看吧,畢竟有交流才有進(jìn)步,有興...
摘要:上有一個關(guān)于下載百度貼吧里的美女圖片的練習(xí)題,最近正好在學(xué)爬蟲相關(guān)的知識,拿來練練手。這是我的目標(biāo)網(wǎng)頁。 Github上有一個關(guān)于下載百度貼吧里的美女圖片的練習(xí)題,最近正好在學(xué)爬蟲相關(guān)的知識,拿來練練手。這是我的目標(biāo)網(wǎng)頁。最開始的時候我在網(wǎng)上找到一個類似的案例,代碼如下圖:showImg(https://segmentfault.com/img/bVbh2SX);稍作修改,運(yùn)行之后得到...
閱讀 3407·2021-11-22 15:22
閱讀 2386·2021-09-06 15:00
閱讀 886·2020-06-22 14:39
閱讀 3716·2019-08-30 15:56
閱讀 1550·2019-08-30 12:55
閱讀 3290·2019-08-29 17:19
閱讀 3239·2019-08-26 11:41
閱讀 625·2019-08-23 17:14