摘要:在上一篇文章的基礎上增加獲取百度貼吧的頭像圖片的功能,使用到的技術為,,具體實現如下查看網頁源代碼測試網頁鏈接通過定位頭像的的代碼每一樓層的標簽是從樓層開始,直到定位到照片順序應該是提取信息通過一步步獲取到這一層,提取到這個標簽中的就可以獲
在上一篇文章的基礎上增加獲取百度貼吧的頭像圖片的功能,使用到的技術為XPath,Requests,具體實現如下:
1. 查看網頁源代碼
測試網頁鏈接:http://tieba.baidu.com/p/3522395718?pn=1 通過Chrome定位頭像的HTML的代碼
每一樓層的標簽是:
class="l_post j_l_post l_post_bright "
從樓層開始,直到定位到照片順序應該是
2. 提取XPath信息
通過XPath一步步獲取到這一層,提取到這個標簽中的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"
這是因為網頁是分步加載的,首先使用默認的頭像展示,再逐步下載自定義頭像替換,因此還要得到自定義頭像的地址,通過分析網頁代碼,可以發現:
“data-tb-lazyload”這個才是真正的自定義頭像的鏈接地址
3. 去掉獲取到的鏈接中的重復值
由于貼吧的不同的樓層是有可能是同一個人,即同一個頭像的;為了節省空間,我們要去除掉重復的圖像,在Python中可以通過函數set()去除列表重復值
links = list(set(links))
測試一下:
print("before set list:{0}".format(len(links))) links = list(set(links)) print("after set list:{0}".format(len(links)))
測試結果:
before set list:27 after set list:21
成功消除掉了重復的鏈接
4.將鏈接存儲到jpeg文件
Requests庫中包含了獲取數據的方法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)
測試結果:
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/45413.html
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
摘要:今天為大家整理了個爬蟲項目。地址新浪微博爬蟲主要爬取新浪微博用戶的個人信息微博信息粉絲和關注。代碼獲取新浪微博進行登錄,可通過多賬號登錄來防止新浪的反扒。涵蓋鏈家爬蟲一文的全部代碼,包括鏈家模擬登錄代碼。支持微博知乎豆瓣。 showImg(https://segmentfault.com/img/remote/1460000018452185?w=1000&h=667); 今天為大家整...
摘要:因為要做去轉盤網,所以一定要爬取網盤資源,本來想自己寫一個爬蟲挺不容易的,不想分享出來,但最后還是決定了拿給大家一起看吧,畢竟有交流才有進步,有興趣的朋友也可以看看我寫的其他日志或者關注我,會發現去轉盤網的大部分技術現在可以說是公開狀態,如 因為要做去轉盤網,所以一定要爬取網盤資源,本來想自己寫一個爬蟲挺不容易的,不想分享出來,但最后還是決定了拿給大家一起看吧,畢竟有交流才有進步,有興...
摘要:上有一個關于下載百度貼吧里的美女圖片的練習題,最近正好在學爬蟲相關的知識,拿來練練手。這是我的目標網頁。 Github上有一個關于下載百度貼吧里的美女圖片的練習題,最近正好在學爬蟲相關的知識,拿來練練手。這是我的目標網頁。最開始的時候我在網上找到一個類似的案例,代碼如下圖:showImg(https://segmentfault.com/img/bVbh2SX);稍作修改,運行之后得到...
閱讀 3402·2021-11-22 15:22
閱讀 2382·2021-09-06 15:00
閱讀 885·2020-06-22 14:39
閱讀 3712·2019-08-30 15:56
閱讀 1549·2019-08-30 12:55
閱讀 3284·2019-08-29 17:19
閱讀 3238·2019-08-26 11:41
閱讀 623·2019-08-23 17:14