成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

獲取百度貼吧頭像的爬蟲

AJie / 2234人閱讀

摘要:在上一篇文章的基礎(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

相關(guān)文章

  • 首次公開,整理12年積累博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時間永遠(yuǎn)都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評論0 收藏0
  • 23個Python爬蟲開源項目代碼,包含微信、淘寶、豆瓣、知乎、微博等

    摘要:今天為大家整理了個爬蟲項目。地址新浪微博爬蟲主要爬取新浪微博用戶的個人信息微博信息粉絲和關(guān)注。代碼獲取新浪微博進(jìn)行登錄,可通過多賬號登錄來防止新浪的反扒。涵蓋鏈家爬蟲一文的全部代碼,包括鏈家模擬登錄代碼。支持微博知乎豆瓣。 showImg(https://segmentfault.com/img/remote/1460000018452185?w=1000&h=667); 今天為大家整...

    jlanglang 評論0 收藏0
  • python爬蟲爬取百度網(wǎng)盤-怎么做一個百度網(wǎng)盤搜索引擎

    摘要:因為要做去轉(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)步,有興...

    k00baa 評論0 收藏0
  • 嘗試用Python3爬取網(wǎng)頁圖片過程記錄

    摘要:上有一個關(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)行之后得到...

    alin 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<