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

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

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

爬虫图片href是html图片,xpath爬虫实例,爬取图片网站百度盘地址和提取码

發(fā)布時(shí)間:2023/11/30 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬虫图片href是html图片,xpath爬虫实例,爬取图片网站百度盘地址和提取码 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

某套圖網(wǎng)站,套圖以封面形式展現(xiàn)在頁(yè)面,需要依次點(diǎn)擊套圖,點(diǎn)擊廣告盤鏈接,最后到達(dá)百度網(wǎng)盤展示頁(yè)面。

這一過(guò)程通過(guò)爬蟲(chóng)來(lái)實(shí)現(xiàn),收集百度網(wǎng)盤地址和提取碼,采用xpath爬蟲(chóng)技術(shù)

1、首先分析圖片列表頁(yè),該頁(yè)按照更新先后順序暫時(shí)套圖封面,查看HTML結(jié)構(gòu)。每一組“l(fā)i”對(duì)應(yīng)一組套圖。屬性href后面即為套圖的內(nèi)頁(yè)地址(即廣告盤鏈接頁(yè))。所以,我們先得獲取列表頁(yè)內(nèi)所有的內(nèi)頁(yè)地址(即廣告盤鏈接頁(yè))

代碼如下:

import requests 倒入requests庫(kù)

from lxml import etree 倒入lxml 庫(kù)(沒(méi)有這個(gè)庫(kù),pip install lxml安裝)

url = "https://www.xxxx.com/gc/" 請(qǐng)求地址

response = requests.get(url= url) 返回結(jié)果

wb_data = response.text 文本展示返回結(jié)果

html = etree.HTML(wb_data) 將頁(yè)面轉(zhuǎn)換成文檔樹(shù)

b = html.xpath('//ul[@class = "clearfix"]//@href') 這一步的意思是class“clearfix”下所有屬性為“href”賦值給“b”,因?yàn)槲覀兊哪繕?biāo)內(nèi)容都展示在class“clearfix”下,且在href屬性后面

print(b) 打印b,這里的b是一個(gè)數(shù)組

print(b[0]) 打印b的第一項(xiàng)數(shù)據(jù)

執(zhí)行結(jié)果:成功返回所有內(nèi)頁(yè)

2、打開(kāi)內(nèi)頁(yè)(即廣告盤鏈接頁(yè)),獲取廣告盤地址。下圖紅色箭頭,還不是真正的百度盤頁(yè),需要點(diǎn)擊后才可以看的到百度盤的地址。所以這一步驟,只需要抓取紅色箭頭內(nèi)容地址;

代碼如下:

url = "https://www.192ta.com/gc/toutiao/87098.html"

response = requests.get(url= url)

wb_data = response.text # 將頁(yè)面轉(zhuǎn)換成文檔樹(shù)

html = etree.HTML(wb_data)

b = html.xpath('//div[@class = "pictext"]//@href')

c=b[1] #需要注意的地方,class = "pictext"下有兩個(gè)href,我們只需要第一個(gè)href的值,所以返回值再賦值給c且取第二項(xiàng)數(shù)據(jù)

print(c)

執(zhí)行結(jié)果:成功返回所有內(nèi)頁(yè)

3、獲取到廣告盤地址,接下來(lái)要打開(kāi)該地址,抓百度盤真實(shí)地址。鏈接和提取碼在兩個(gè)不同的元素中,所有最后返回兩組數(shù)據(jù)。

代碼如下:

url = "http://17d.la/xam9I6"

response = requests.get(url= url)

wb_data = response.text

# 將頁(yè)面轉(zhuǎn)換成文檔樹(shù)

html = etree.HTML(wb_data)

b = html.xpath('//tr/td/text()')

c=b[6]#提取碼

d = html.xpath('//tr//@href')#百度地址

print(c)

print(d)

注意,這里html.xpath寫法與上面有些區(qū)別,目標(biāo)元素的上級(jí)沒(méi)有class,只能模糊取值

比如提取碼的HTML結(jié)構(gòu)如下圖,結(jié)構(gòu)為//tr/td/,單/代表父節(jié)點(diǎn)下的子節(jié)點(diǎn),雙/代表父節(jié)點(diǎn)后的子孫節(jié)點(diǎn)。提取碼為tr的子節(jié)點(diǎn)。但是這個(gè)結(jié)構(gòu)下有很多組數(shù)據(jù),最后輸出一個(gè)數(shù)組b(看上面代碼b)。如此,我們找到提取碼位于數(shù)組序列,賦值給c(看上面代碼c),這樣獲得了真實(shí)的百度盤地址

網(wǎng)盤地址則因?yàn)橛衕ref屬性,所以好爬去一些,注意/的數(shù)量即可

4、把以上步驟拼成一個(gè)腳本,這里就涉及到函數(shù)和函數(shù)之間的傳參,還有循環(huán)的問(wèn)題。代碼直接貼出來(lái)

# -*-coding:utf8-*-

import requests

from lxml import etree

firstlink = "https://www.xxx.com/gc/qt/83720.html"

#第一步,獲取第一頁(yè)面所有的地址

def stepa ():

url = "https://www.xxx.com/gc/"

response = requests.get(url=url)

wb_data = response.text

# 將頁(yè)面轉(zhuǎn)換成文檔樹(shù)

html = etree.HTML(wb_data)

a = html.xpath('//ul[@class = "clearfix"]//@href')

return(a)

alllink = stepa()

#第二步,獲取的地址,循環(huán)讀取打開(kāi),從而獲取百度網(wǎng)盤信息

def stepb(alllink,firstlink):

for url in alllink:

if url == firstlink:

continue

response = requests.get(url=url)

wb_data = response.text

# 將頁(yè)面轉(zhuǎn)換成文檔樹(shù)

html = etree.HTML(wb_data)

b = html.xpath('//div[@class = "pictext"]//@href')

c = b[1]

#獲取到廣告頁(yè)地址

url2 = c

response = requests.get(url=url2)

wb_data = response.text

# 將頁(yè)面轉(zhuǎn)換成文檔樹(shù)

html = etree.HTML(wb_data)

b = html.xpath('//tr/td/text()')

c = b[6]

d = html.xpath('//tr//@href')

print(c)

print(d)

#獲取百度地址和提取碼

stepb(alllink,firstlink)

需要注意的地方:

1、return的用法,如果想把函數(shù)生成的值傳給后面的函數(shù)用,就需要返回這個(gè)值,如def stepa 里定義的a為爬去的套圖封面地址(通過(guò)打開(kāi)這個(gè)地址進(jìn)行下一步),就需要return(a)返回a的值,否則執(zhí)行后無(wú)數(shù)據(jù)

2、Continue的應(yīng)用,因?yàn)榈谝粋€(gè)套圖地址打開(kāi)的內(nèi)容沒(méi)有目標(biāo)內(nèi)容,這樣找不到元素會(huì)報(bào)錯(cuò),所以需要讀取套圖地址的時(shí)候要跳過(guò)第一個(gè)地址。加一個(gè)if判斷,當(dāng)?shù)谝粋€(gè)地址等于事先定義好的非正常地址的時(shí)候,跳過(guò)這個(gè)循環(huán)

打印結(jié)果:

參考地址:https://cuiqingcai.com/5545.html

總結(jié)

以上是生活随笔為你收集整理的爬虫图片href是html图片,xpath爬虫实例,爬取图片网站百度盘地址和提取码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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