爬蟲圖片href是html圖片,xpath爬蟲實例,爬取圖片網站百度盤地址和提取碼

某套圖網站,套圖以封面形式展現在頁面,需要依次點擊套圖,點擊廣告盤鏈接,最后到達百度網盤展示頁面。

這一過程通過爬蟲來實現,收集百度網盤地址和提取碼,采用xpath爬蟲技術

1、首先分析圖片列表頁,該頁按照更新先后順序暫時套圖封面,查看HTML結構。每一組“li”對應一組套圖。屬性href后面即為套圖的內頁地址(即廣告盤鏈接頁)。所以,我們先得獲取列表頁內所有的內頁地址(即廣告盤鏈接頁)

代碼如下:

import requests 倒入requests庫

from lxml import etree 倒入lxml 庫(沒有這個庫,pip install lxml安裝)

url = "https://www.xxxx.com/gc/" 請求地址

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

wb_data = response.text 文本展示返回結果

html = etree.HTML(wb_data) 將頁面轉換成文檔樹

b = html.xpath('//ul[@class = "clearfix"]//@href') 這一步的意思是class“clearfix”下所有屬性為“href”賦值給“b”,因為我們的目標內容都展示在class“clearfix”下,且在href屬性后面

print(b) 打印b,這里的b是一個數組

print(b[0]) 打印b的第一項數據

執行結果:成功返回所有內頁

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

代碼如下:

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

response = requests.get(url= url)

wb_data = response.text # 將頁面轉換成文檔樹

html = etree.HTML(wb_data)

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

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

print(c)

執行結果:成功返回所有內頁

3、獲取到廣告盤地址,接下來要打開該地址,抓百度盤真實地址。鏈接和提取碼在兩個不同的元素中,所有最后返回兩組數據。

代碼如下:

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

response = requests.get(url= url)

wb_data = response.text

# 將頁面轉換成文檔樹

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寫法與上面有些區別,目標元素的上級沒有class,只能模糊取值

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

網盤地址則因為有href屬性,所以好爬去一些,注意/的數量即可

4、把以上步驟拼成一個腳本,這里就涉及到函數和函數之間的傳參,還有循環的問題。代碼直接貼出來

# -*-coding:utf8-*-

import requests

from lxml import etree

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

#第一步,獲取第一頁面所有的地址

def stepa ():

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

response = requests.get(url=url)

wb_data = response.text

# 將頁面轉換成文檔樹

html = etree.HTML(wb_data)

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

return(a)

alllink = stepa()

#第二步,獲取的地址,循環讀取打開,從而獲取百度網盤信息

def stepb(alllink,firstlink):

for url in alllink:

if url == firstlink:

continue

response = requests.get(url=url)

wb_data = response.text

# 將頁面轉換成文檔樹

html = etree.HTML(wb_data)

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

c = b[1]

#獲取到廣告頁地址

url2 = c

response = requests.get(url=url2)

wb_data = response.text

# 將頁面轉換成文檔樹

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的用法,如果想把函數生成的值傳給后面的函數用,就需要返回這個值,如def stepa 里定義的a為爬去的套圖封面地址(通過打開這個地址進行下一步),就需要return(a)返回a的值,否則執行后無數據

2、Continue的應用,因為第一個套圖地址打開的內容沒有目標內容,這樣找不到元素會報錯,所以需要讀取套圖地址的時候要跳過第一個地址。加一個if判斷,當第一個地址等于事先定義好的非正常地址的時候,跳過這個循環

打印結果:

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/382926.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382926.shtml
英文地址,請注明出處:http://en.pswp.cn/news/382926.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HTML如何做個播放器圖表,Web繪圖神器之ECharts-ts文件播放器

前言最近在做一個項目需要用到大量的圖形報表來展示數據。就去對比了一些前端圖形報表框架,有Highcharts、Echarts、Three.js。發現Three.js比較笨重,不太適合數據展示,做前端動畫還是比較好。而highcharts、echarts比較輕量級拿來就用比較方…

微型計算機主存可以分為,計算機基礎試題 (含答案)

計算機基礎試題 (含答案)一、填空題(每空1分,共30分)1、計算計的軟件系統通常分成______軟件和______軟件。2、字長是計算機______次能處理的______進制位數。3、1KB______B;1MB______KB。4、計算機中,中央處理器CPU由______和______兩部分組成。5、CPU按…

90年代微型計算機,版本控制如何在80年代和90年代的當今微型計算機上工作?

您必須在當時的通用基礎結構中看到這一點。在80年代初期,IBM發布了“個人計算機”,您可以從字面上理解它。開發PC應用程序的最常見方法是一個人創建某些東西并試圖出售它。因此,每個發行版本一張軟盤可能很常見。您可以購買一些漂亮的彩色標簽…

全國英語計算機9月統考2019,2019年9月網絡教育統考《計算機應用基礎》模擬題6...

本文為大家提供2019年9月網絡教育統考《計算機應用基礎》模擬題6,有需要的考生請自取。網絡教育本科全國統考《計算機應用基礎》模擬題6一、單選題1、第一臺電子數字計算機誕生于 ______。A : 麻省理工學院B : 哈佛大學C : 賓夕法…

計算機網絡原碼反碼補碼,計算機的原碼和反碼及補碼到底是什么

數據在計算機里面都是以0和1存儲和運算的,這是馮諾依曼體系的基礎。比如一個數在計算機中若有正負之分,則用一個數的最高位(符號位)用來表示它的正負,其中0表示正數,1表示負數。原碼就是整數絕對值的二進制形式,為了解…

計算機組裝活動口號,廣教育、多技能、求發展喜迎計算機系第五屆電腦文化節...

在深入學習實踐科學發展觀,改革教育教學模式,迎接高職院校人才培養評估工作的今天,為貫徹以人為本理念,全方位服務學生,培養學生綜合技能,本學期計算機系舉辦第五屆電腦文化節,舉辦電腦文化節是…

關于計算機應用基礎問題,《計算機應用基礎》習題及問題詳解

《計算機應用基礎》習題及問題詳解 (17頁)本資源提供全文預覽,點擊全文預覽即可全文預覽,如果喜歡文檔就下載吧,查找使用更方便哦!19.90 積分實用文檔第一章 計算機基礎知識填空題:1. 信息技術在現代工業工程中的應用十分廣泛&…

html 微博下拉菜單,jQuery實現模仿微博下拉滾動條加載數據效果

本文實例講述了jQuery實現模仿微博下拉滾動條加載數據效果。分享給大家供大家參考,具體如下:滾動條距離底部$(function () {var i 4;$(window).bind("scroll", function (event) {//滾動條到網頁頭部的 高度,兼容ie,ff,chromevar …

怎么用計算機計算方位角,坐標方位角連續計算 fx-5800計算器編程

摘要:利用fx-5800計算器可編程的特點,編寫坐標方位角連續計算程序,使計算方位角的工作變得簡單易行,并且工作量大幅度降低。關鍵詞:方位角;左側轉角;導線Abstract: using fx-5800 calculator pr…

yii html 添加下拉框,php – Yii2下拉列表:在我的選項中添加像data-food =“…”這樣的html標記...

我正在使用Yii2構建應用程序.我使用Yii2提供的Html Helper生成下拉列表: Html::dropDownList(food, $food_id, $foodList, [id>food-select]); ?>其中$food_id是默認選擇的選項,$foodList是一個包含表示選項值和文本的鍵值對的數組.它工作得很好,但我需要在我…

html是網頁技術,Html靜態網頁技術小結

《Html靜態網頁技術小結》由會員分享,可在線閱讀,更多相關《Html靜態網頁技術小結(4頁珍藏版)》請在人人文庫網上搜索。1、Html靜態網頁技術小結l Html入門n 所有的html網頁都是有標簽(W3C規定標準標簽)n 所有的標簽使用標準: ,而…

超級計算機 極光,萬億次極光系列代數運算微處理器來襲,國產超算已經一騎絕塵?-控制器/處理器-與非網...

在一日千里、風起云涌的信息時代,誰掌握了核心芯片技術,誰就占據了引領信息產業發展潮流的制高點。長期以來中國一直飽受缺芯之痛,每年都要花費超過 2000 億美元的資金用于從西方國家購買芯片,規模甚至超過了石油、鐵礦石等大宗資…

計算機組成數據通路組成實驗報告,計算機組成原理實驗報告+++數據通路實驗.doc...

計算機組成原理實驗報告數據通路實驗數據通路組成實驗一、實驗目的(1)將雙端口通用寄存器組和雙端口存儲器模塊聯機;(2)進一步熟悉計算機的數據通路;(3)掌握數字邏輯電路中故障的一般規律,以及排除故障的一…

計算機網絡安全本科大學排名,2021網絡工程專業大學排名 最好大學排行榜

2021網絡工程專業大學排名 最好大學排行榜2021-06-11 19:35:09文/丁雪竹網絡工程專業在全國最好的大學是哪幾所呢,最好的大學排名是什么樣呢,小編整理網絡工程專業大學最好大學排行榜,僅供參考!網絡工程專業最好大學排行榜在網絡工…

20線程測試cpu性能軟件,評測平臺介紹、CPU多線程性能測試

2、平臺介紹及CPU性能測試AMD AM3平臺CPUAMD FX-8150(4模塊/8核)AMD FX-8350(4模塊/8核)主板華碩 Crosshair V Formula(BIOS版本:1605)Intel LGA1155平臺CPUIntel Core i5 3570K(4核/4線程)Intel Core i7 3770K(4核/8線程)主板華碩 P8Z77-V Deluxe共用配件硬盤主盤&…

大型網站服務器 pdf,大型網站服務器容量規劃[PDF][145.25MB]

內容簡介內 容 提 要本書講解了用數學回歸分析方法來做服務器容量規劃的思路,讓讀者掌握服務器容量規劃的量化方法;模型的選擇是服務器容量規劃的關鍵,不同的程序有不同的模型。本書使用nginxPHPMySQL為實例演示了具體的規劃過程,…

穿越火線全部服務器都顯示爆滿,穿越火線大區全部爆滿,頻道擠不進去背后的故事!...

大家好我是小包子,穿越火線經歷了十一周年,盛典游戲更新后,我們發現游戲基本上所有大區都呈現爆滿的盛世。我們熱愛的穿越火線又回來了嗎?6月小包子曾爆料CF啟動量超過吃雞躍居第二,射擊游戲第一,重回巔峰的…

dod刷服務器文件,DoD 5220.22-M和Gutmann兩種硬盤擦除算法

DoD 5220.22-M的說明Use this seven-pass method for tighter security. Different patterns ofbytes are written to the disk as described in the table below. Usingthis method is probably even safer than using the simple method (with 6passes).This method is descr…

服務器加根網線用不用修改路由器,安裝設置無線路由器需要用幾根網線?

“安裝設置無線路由器需要用幾根網線?看到網上安裝設置路由器的教程,有的說需要兩根網線,有的說需要一根網線,請問到底應該使用一根還是兩根呢?”其實這個問題的答案并不是唯一的,使用一根還是兩根&#xf…

大數運算#

大數,就是C/C中利用基本類型所不能存儲的數字,少則數十位,大則幾萬位,如何存儲和計算大數就是本文的內容。 在C和C中,沒有存儲大數的數據結構,就算 unsigned long long也只能表示19位的數字 ?如果我們用d…