整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          VBA網(wǎng)抓數(shù)據(jù)結(jié)果的鏈接

          分享成果,隨喜正能量】人的一生,肯定會(huì)遭遇各種挫折與挑戰(zhàn),莫大的壓力會(huì)讓你喘不過氣。可是,只有真正懂得適時(shí)彎腰的人才能得以克服危機(jī),贏得勝利。這不是懦弱,也不是沒骨氣,而是一種大智慧。強(qiáng)干、蠻干,只會(huì)帶來不可必要的損失。

          《VBA信息獲取與處理》教程是我推出第六套教程,目前已經(jīng)是第一版修訂了。這套教程定位于最高級(jí),是學(xué)完初級(jí),中級(jí)后的教程。這部教程給大家講解的內(nèi)容有:跨應(yīng)用程序信息獲得、隨機(jī)信息的利用、電子郵件的發(fā)送、VBA互聯(lián)網(wǎng)數(shù)據(jù)抓取、VBA延時(shí)操作,剪貼板應(yīng)用、Split函數(shù)擴(kuò)展、工作表信息與其他應(yīng)用交互,F(xiàn)SO對(duì)象的利用、工作表及文件夾信息的獲取、圖形信息的獲取以及定制工作表信息函數(shù)等等內(nèi)容。程序文件通過32位和64位兩種OFFICE系統(tǒng)測試。是非常抽象的,更具研究的價(jià)值。

          教程共兩冊(cè),八十四講。今日的內(nèi)容是專題六“VBA中利用XMLHTTP完成網(wǎng)抓數(shù)據(jù)”的第3講:VBA網(wǎng)抓數(shù)據(jù)結(jié)果的鏈接

          第三節(jié) 利用XMLHTTP抓取百度搜索數(shù)據(jù)結(jié)果,給出打開鏈接

          在上一講中我們實(shí)現(xiàn)了利用XMLHTTP的方法抓取了搜索關(guān)鍵詞的數(shù)據(jù),但是我們?cè)诰W(wǎng)絡(luò)查詢的時(shí)候,往往不僅需要總的數(shù)據(jù)支持,還需要一些具體的數(shù)據(jù),比如:查找到了哪些網(wǎng)址,標(biāo)題是什么?如果我需要進(jìn)一步的查看往往要需要打開的鏈接。這種數(shù)據(jù)如何抓取呢?這講我就來實(shí)現(xiàn)這個(gè)問題。

          實(shí)現(xiàn)的場景:如下圖當(dāng)我們點(diǎn)擊右側(cè)的按鈕“利用VBA提取搜索關(guān)鍵詞的數(shù)據(jù),并給出下載的鏈接”時(shí)能夠在下面的數(shù)據(jù)區(qū)域給出查詢到的結(jié)果。

          其實(shí),這種處理也是工作中經(jīng)常遇到的,可以對(duì)于我們?yōu)g覽的網(wǎng)頁進(jìn)行適當(dāng)?shù)谋4妫谛枰臅r(shí)候再詳細(xì)的查詢。特別是把這些數(shù)據(jù)保存在EXCEL表格中,更讓管理?xiàng)l理清晰。那么如何實(shí)現(xiàn)這個(gè)場景呢?我們?nèi)允抢肵MLHTTP來完成我們的工作。

          1 應(yīng)用XMLHTTP實(shí)現(xiàn)數(shù)據(jù)查詢并提取網(wǎng)頁鏈接的思路分析

          我們先模擬一下直接在網(wǎng)頁上查詢數(shù)據(jù),當(dāng)我們輸入一個(gè)數(shù)據(jù)點(diǎn)擊回車的時(shí)候,服務(wù)器會(huì)反饋回?cái)?shù)據(jù)在我們的瀏覽器上,我們需要對(duì)網(wǎng)頁的源代碼進(jìn)行分析,

          上面的截圖就是我錄入“VBA語言專家”點(diǎn)擊回車后的在后臺(tái)看到的源代碼,你會(huì)發(fā)現(xiàn),所有我們要寫入EXCEL表格的信息都出現(xiàn)在了這里。

          其中“標(biāo)題”可以用innerText屬性來獲得,鏈接可以用href的屬性來獲得,真的非常容易,下面我們就要實(shí)現(xiàn)把多頁查詢的結(jié)果填到excel表格中,這個(gè)時(shí)候我們利用發(fā)送給服務(wù)器時(shí)要求頭部檢查一下查詢的時(shí)間即可如下代碼:.setRequestHeader "If-Modified-Since", "0"

          這樣就可以實(shí)現(xiàn)我們的要求了。

          2 應(yīng)用XMLHTTP實(shí)現(xiàn)數(shù)據(jù)查詢并提取網(wǎng)頁鏈接的代碼實(shí)現(xiàn)過程

          下面我們把上面的思路轉(zhuǎn)換為代碼,如下所示:

          Sub myNZA() '利用VBA提取搜索關(guān)鍵詞的數(shù)據(jù),并給出下載的鏈接

          【具體見教程】

          End Sub

          代碼截圖:

          代碼講解:

          1) Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")

          Set objDOM = CreateObject("htmlfile")

          上述代碼建立了兩個(gè)引用,一個(gè)是XMLHTTP ,一個(gè)是htmlfile ,之后將利用這兩個(gè)引用完成我們的工作。

          2)UU = Range("B1").Value 這是我們要查詢的關(guān)鍵數(shù)據(jù)

          3)For i = 0 To 50 Step 10 '五頁 這是要查詢5次利用i作為查詢的頁碼

          4) strURL = "https://www.baidu.com/s?"

          strURL = strURL & "wd=" & UU

          strURL = strURL & "&pn=" & i

          上述代碼是完成了我們要查詢的請(qǐng)求URL。

          5) .Open "GET", strURL, False 使用OPEN 方法

          6) .setRequestHeader "If-Modified-Since", "0" 請(qǐng)求頭部把瀏覽器端緩存頁面的最后修改時(shí)間一起發(fā)到服務(wù)器去,服務(wù)器會(huì)把這個(gè)時(shí)間與服務(wù)器上實(shí)際文件的最后修改時(shí)間進(jìn)行比較,以保障我們每次請(qǐng)求到的數(shù)據(jù)是沒有重復(fù)的。

          7) .send 注意請(qǐng)求頭部的提交要在此命令之前完成

          8)objDOM.body.innerHTML = .responseText '將.responseText內(nèi)容寫入新objDOM對(duì)象的body

          9) For Each objTitle In objDOM.getElementsByTagName("h3") 在每個(gè)H3標(biāo)簽即標(biāo)題進(jìn)行遍歷操作。注意<h1> 到 <h6>是標(biāo)簽標(biāo)題。<h1> 定義最大的標(biāo)題。<h6> 定義最小的標(biāo)題。

          10)With objTitle.getElementsByTagName("a")(0) 對(duì)于每個(gè)屬性名稱為為“a”的元素

          11)Cells(k, 2) = .innerText

          Cells(k, 3) = .href

          提取標(biāo)簽之間的純文本信息和鏈接

          12)Set objXMLHTTP = Nothing

          Set objDOM = Nothing

          Set objTitle = Nothing

          回收內(nèi)存。

          3 應(yīng)用XMLHTTP實(shí)現(xiàn)數(shù)據(jù)查詢并提取網(wǎng)頁鏈接的實(shí)現(xiàn)效果

          我們先來看看當(dāng)我們點(diǎn)擊運(yùn)行按鈕后的實(shí)現(xiàn)效果:

          此時(shí)我們?nèi)我恻c(diǎn)擊一個(gè)單元格的鏈接,就會(huì)轉(zhuǎn)跳到下面的頁面:

          從而實(shí)現(xiàn)了我們最初的課題要求。

          本節(jié)知識(shí)點(diǎn)回向:如何利用XMLHTTP反饋網(wǎng)頁中的關(guān)鍵詞的搜索結(jié)果和網(wǎng)頁的鏈接?

          本講參考程序文件:006工作表.XLSM

          我20多年的VBA實(shí)踐經(jīng)驗(yàn),全部濃縮在下面的各個(gè)教程中,教程學(xué)習(xí)順序:

          ebSight是由Hugging Face機(jī)構(gòu)開發(fā)的一個(gè)網(wǎng)頁截圖轉(zhuǎn)換為HTML代碼的合成數(shù)據(jù)集。該數(shù)據(jù)集包含200萬對(duì)HTML代碼及其對(duì)應(yīng)的截圖,是開源社區(qū)中首次嘗試將網(wǎng)頁截圖轉(zhuǎn)換為可用HTML代碼的重要資源。在構(gòu)建過程中,研究人員首先使用一個(gè)小型語言模型來生成多樣化的網(wǎng)站主題和設(shè)計(jì),然后把這些網(wǎng)站主題和設(shè)計(jì)輸入到一個(gè)代碼大模型中生成最終的HTML代碼,最后采用Playwright工具來可視化并捕獲生成的HTML代碼的輸出。該數(shù)據(jù)集可用于訓(xùn)練視覺語言模型,使其能夠基于網(wǎng)頁截圖生成對(duì)應(yīng)的HTML代碼,這對(duì)于無代碼開發(fā)和提高UI開發(fā)效率具有重要意義。

          詳情請(qǐng)參見五號(hào)雷達(dá):https://www.5radar.com/result?key=WebSight

          文共1589字,預(yù)計(jì)學(xué)習(xí)時(shí)長10分鐘


          圖源:unsplash


          有人說,數(shù)據(jù)會(huì)取代石油的地位,成為未來最珍稀的資源之一。無論這個(gè)命題是否成立,毫無疑問,數(shù)據(jù)或信息(任意形式)已然成為21世紀(jì)最寶貴的無形資產(chǎn)之一。


          數(shù)據(jù)極其強(qiáng)大,用途頗廣:可以預(yù)測銷售的未來趨勢以獲利,可以在醫(yī)療保健行業(yè)中用于診斷早期結(jié)核病,從而挽救患者的生命……而數(shù)據(jù)科學(xué)家要做的是,如何從各種資源中提取有價(jià)值的數(shù)據(jù)。


          本文將幫助你掌握這個(gè)數(shù)據(jù)時(shí)代的必備技能——如何使用python中的庫從網(wǎng)站提取數(shù)據(jù)。筆者將演示從inshorts網(wǎng)站提取與板球、羽毛球和網(wǎng)球等不同運(yùn)動(dòng)有關(guān)的新聞報(bào)道。


          步驟1:導(dǎo)入相關(guān)庫


          import requests
                       from bs4 importBeautifulSoup
                       import pandas as pd


          步驟2:發(fā)出Web請(qǐng)求并使用BeautifulSoup進(jìn)行解析


          先要查看特定新聞?lì)悇e的源代碼。進(jìn)入網(wǎng)頁后將看到不同種類的新聞,關(guān)注某一特定的新聞,使用Beautiful Soup提取源代碼。在右側(cè)可以看到新聞文章及相應(yīng)的源代碼。


          圖源:unsplash


          使用請(qǐng)求庫,并在URL上使用.get()從網(wǎng)頁訪問HTML腳本。然后,使用beautiful soup庫在python中解析此HTML語言。根據(jù)要提取的信息類型,可以使用.find()函數(shù)從不同的html標(biāo)簽(例如<div>,<span>)中過濾該信息。


          dummy_url="https://inshorts.com/en/read/badminton"                                                                  data_dummy=requests.get(dummy_url)
                                                                              soup=BeautifulSoup(data_dummy.content,'html.parser')
                                                                              soup


          完成上述步驟并解析HTML語言后,此特定新聞的部分解析如下所示:


          我們看到該文章的標(biāo)題位于-<div class =“ news-card-title news-right-box”>類別下,進(jìn)一步可以看到標(biāo)題位于<span>標(biāo)記中,并且屬性為“ itemprop”和“ headline”,可以使用.find()函數(shù)進(jìn)行訪問。


          news1=soup.find_all('div',class_=["news-card-title news-right-box"])[0]
          title=news1.find('span',attrs={'itemprop':"headline"}).string
          print(title)
          We get the following outputgiven below-
          Shuttler Jayaram wins Dutch OpenGrand Prix


          同樣,如果要訪問新聞內(nèi)容,則將該新聞設(shè)置為<div class =“ news-card-contentnews-right-box”>類別。我們還可以看到新聞的正文位于<div>標(biāo)記中,該標(biāo)記的屬性為“ itemprop”和“ articleBody”,可以使用.find()函數(shù)進(jìn)行訪問。


          news1=soup.find_all('div',class_=["news-card-content news-right-box"])[0]
          content=news1.find('div',attrs={'itemprop':"articleBody"}).string
          print(content)
          Indian Shuttler Ajay Jayaramclinched $50k Dutch Open Grand Prix at Almere in Netherlands on Sunday,becoming the first Indian to win badminton Grand Prix tournament under a newscoring system. Jayaram defeated Indonesia's Ihsan Maulana Mustofa 10-11, 11-6,11-7, 1-11, 11-9 in an exciting final clash. The 27-year-old returned to thecircuit in August after a seven-month injury layoff.


          以類似的方式,我們可以提取圖像、作者姓名、時(shí)間等任何信息。


          步驟3:建立資料集


          接下來,我們對(duì)3種新聞?lì)悇e實(shí)施此操作,然后將所有文章相應(yīng)的內(nèi)容和類別存儲(chǔ)在數(shù)據(jù)框中。筆者將使用三個(gè)不同的Urls,對(duì)每個(gè)URL實(shí)施相同的步驟,并將所有文章及其內(nèi)容設(shè)置類別存儲(chǔ)為列表形式。


          urls=["https://inshorts.com/en/read/cricket","https://inshorts.com/en/read/tennis",
               "https://inshorts.com/en/read/badminton"]
                                                                                news_data_content,news_data_title,news_data_category=[],[],[]
                                                                                for url in urls:
                                                                                  category=url.split('/')[-1]
                                                                                data=requests.get(url)
           soup=BeautifulSoup(data.content,'html.parser')
                                                                                  news_title=[]
                                                                                  news_content=[]
                                                                                  news_category=[]
                                                                                  for headline,article inzip(soup.find_all('div', class_=["news-card-titlenews-right-box"]),
                                                                                                            soup.find_all('div',class_=["news-card-contentnews-right-box"])):
                                                                                    news_title.append(headline.find('span',attrs={'itemprop':"headline"}).string)
                            news_content.append(article.find('div',attrs={'itemprop':"articleBody"}).string)
                                                                                    news_category.append(category)
                                                                                  news_data_title.extend(news_title)
                                                                                  news_data_content.extend(news_content)
           news_data_category.extend(news_category) 
                        df1=pd.DataFrame(news_data_title,columns=["Title"])
                                                                                df2=pd.DataFrame(news_data_content,columns=["Content"])
                                                                                df3=pd.DataFrame(news_data_category,columns=["Category"])
                                                                                df=pd.concat([df1,df2,df3],axis=1)
                                                                                df.sample(10)


          輸出為:


          你可以看到,使用beautiful soup 庫在python中抓取網(wǎng)頁信息是多么容易,你可以輕松地為任何數(shù)據(jù)科學(xué)項(xiàng)目收集有用數(shù)據(jù)。從此之后自備“慧眼”,在網(wǎng)頁中飛速提取有價(jià)值的信息。


          留言點(diǎn)贊關(guān)注

          我們一起分享AI學(xué)習(xí)與發(fā)展的干貨

          如轉(zhuǎn)載,請(qǐng)后臺(tái)留言,遵守轉(zhuǎn)載規(guī)范


          主站蜘蛛池模板: 色狠狠色狠狠综合一区| 国产在线精品一区在线观看| 亚洲一区二区在线免费观看| 精品一区二区三区水蜜桃| 国产人妖视频一区二区破除| 老湿机一区午夜精品免费福利| 国产免费私拍一区二区三区| 一区二区三区视频在线播放| 精品久久国产一区二区三区香蕉| 亚洲熟妇av一区二区三区漫画| 一区二区三区四区精品视频| 国产未成女一区二区三区 | 国产在线精品一区在线观看| 好爽毛片一区二区三区四| 亚洲一区二区三区高清不卡 | 久久毛片一区二区| 精品人妻少妇一区二区三区在线| 无码精品国产一区二区三区免费 | 国产一区二区好的精华液| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 韩国精品一区二区三区无码视频 | 精品成人av一区二区三区| 色欲AV蜜桃一区二区三| 日韩精品中文字幕无码一区| 国产伦精品一区二区三区视频猫咪 | 亚洲一区在线视频观看| 视频一区在线免费观看| 中文字幕一区二区三区人妻少妇| 91国在线啪精品一区| 免费在线视频一区| 国产精品亚洲一区二区无码| 一区二区三区日韩| 亚洲无删减国产精品一区| A国产一区二区免费入口| 久久99精品国产一区二区三区| 无码日韩精品一区二区三区免费 | 精品黑人一区二区三区| 免费无码VA一区二区三区| 亚洲AV无一区二区三区久久| 精品国产日产一区二区三区| 亚洲AV综合色一区二区三区|