導航:首頁 > 源碼編譯 > 視覺源碼抓取

視覺源碼抓取

發布時間:2023-03-27 13:39:00

python爬蟲怎麼獲取動態的網頁源碼

一個月前實習導師布置任務說通過網路爬蟲獲取深圳市氣象局發布的降雨數據,網頁如下:

心想,爬蟲不太難的,當年跟zjb爬煎蛋網無(mei)聊(zi)圖的時候,多麼清高。由於接受任務後的一個月考試加作業一大堆,導師也不催,自己也不急。

但是,導師等我一個月都得讓我來寫意味著這東西得有多難吧。。。今天打開一看的確是這樣。網站是基於Ajax寫的,數據動態獲取,所以無法通過下載源代碼然後解析獲得。

從某不良少年寫的抓取淘寶mm的例子中收到啟發,對於這樣的情況,一般可以同構自己搭建瀏覽器實現。phantomJs,CasperJS都是不錯的選擇。

導師的要求是獲取過去一年內深圳每個區每個站點每小時的降雨量,執行該操作需要通過如上圖中的歷史查詢實現,即通過一個時間來查詢,而這個時間存放在一個hidden類型的input標簽里,當然可以通過js語句將其改為text類型,然後執行send_keys之類的操作。然而,我失敗了。時間可以修改設置,可是結果如下圖。

為此,僅抓取實時數據。選取python的selenium,模擬搭建瀏覽器,模擬人為的點擊等操作實現數據生成和獲取。selenium的一大優點就是能獲取網頁渲染後的源代碼,即執行操作後的源代碼。普通的通過 url解析網頁的方式只能獲取給定的數據,不能實現與用戶之間的交互。selenium通過獲取渲染後的網頁源碼,並通過豐富的查找工具,個人認為最好用的就是find_element_by_xpath("xxx"),通過該方式查找到元素後可執行點擊、輸入等事件,進而向伺服器發出請求,獲取所需的數據。

[python]view plain

㈡ 如何利用VBA來抓取給定鏈接的網頁源代碼

1、這個問題相對比態明洞較專業。建議再去知乎看看

2、另外咨詢下淘寶看看賣VBA程序的人都給出什麼方案

3、以下代碼轉載自網路:

方法1:利用AJAX

Dimhttp
Sethttp=CreateObject("Microsoft.XMLHTTP")
槐褲http.Open"POST","連接地址",False
http.send""
Ifhttp.Status=200Then
selection.text=http.responseText
EndIf、
二是開啟IE進程
Subtest()
Setie=CreateObject("InternetExplorer.Application")'設置變數
Withie'設置塊
.Navigate("需要打開的網頁的網址")'打開網頁
.Visible=True'是否顯示ie窗口
While.readystate<>4'延遲等待頁面載入完畢
DoEvents
Wend
Fori=22To49Step3'取數循環
S=S&""&.Document.all.tags("td")(i).innerTEXT'取帆枯數據到變數,熟悉HTML的DOM可以修改這個實現各種內容
Nexti
EndWith'塊結束
S=LTrim(S)'刪除左邊空格
Application.SendKeys"^{F4}"'發送按鍵關閉當前瀏覽器標簽
MsgBoxS'顯示結果
Setie=Nothing'釋放內存
EndSub

㈢ 請問,機器人視覺抓取關鍵技術有哪些,各有哪些實現方法,有何優缺點

首先,我們要了解,機器人領域的視覺(Machine Vision)跟計算機領域(Computer Vision)的視覺有一些不同:機器視覺的目的是給機器人提供操作物體的信息。所以,機器視覺的研究大概有這幾塊:

物體識別(Object Recognition):在圖像中檢測到物體類型等,這跟 CV 的研究有很大一部分交叉;

位姿估計(Pose Estimation):計算出物體在攝像機坐標系下的位置和姿態,對於機器人而言,需要抓取東西,不僅要知道這是什麼,也需要知道它具體在哪裡;

相機標定(Camera Calibration):因為上面做的只是計算了物體在相機坐標系下的坐標,我們還需要確定相機跟機器人的相對位置和姿態,這樣才可以將物體位姿轉換到機器人位姿。

當然,我這里主要是在物體抓取領域的機器視覺;SLAM 等其他領域的就先不講了。

由於視覺是機器人感知的一塊很重要內容,所以研究也非常多了,我就我了解的一些,按照由簡入繁的順序介紹吧:

0. 相機標定

這其實屬於比較成熟的領域。由於我們所有物體識別都只是計算物體在相機坐標系下的位姿,但是,機器人操作物體需要知道物體在機器人坐標系下的位姿。所以,我們先需要對相機的位姿進行標定。內參標定就不說了,參照張正友的論文,或者各種標定工具箱;外參標定的話,根據相機安裝位置,有兩種方式:

Eye to Hand:相機與機器人極坐標系固連,不隨機械臂運動而運動

Eye in Hand:相機固連在機械臂上,隨機械臂運動而運動 兩種方式的求解思路都類似,首先是眼在手外(Eye to Hand)

只需在機械臂末端固定一個棋盤格,在相機視野內運動幾個姿態。由於相機可以計算出棋盤格相對於相機坐標系的位姿 、機器人運動學正解可以計算出機器人底座到末端抓手之間的位姿變化 、而末端爪手與棋盤格的位姿相對固定不變。這樣,我們就可以得到一個坐標系環

而對於眼在手上(Eye in Hand)的情況,也類似,在地上隨便放一個棋盤格(與機器人基座固連),然後讓機械臂帶著相機走幾個位姿,然後也可以形成一個 的坐標環

  1. 平面物體檢測

這是目前工業流水線上最常見的場景。目前來看,這一領域對視覺的要求是:快速、精確、穩定。所以,一般是採用最簡單的邊緣提取+邊緣匹配/形狀匹配的方法;而且,為了提高穩定性、一般會通過主要打光源、採用反差大的背景等手段,減少系統變數。

目前,很多智能相機(如 cognex)都直接內嵌了這些功能;而且,物體一般都是放置在一個平面上,相機只需計算物體的 三自由度位姿即可。另外,這種應用場景一般都是用於處理一種特定工件,相當於只有位姿估計,而沒有物體識別。 當然,工業上追求穩定性無可厚非,但是隨著生產自動化的要求越來越高,以及服務類機器人的興起。對更復雜物體的完整位姿 估計也就成了機器視覺的研究熱點。

2. 有紋理的物體

機器人視覺領域是最早開始研究有紋理的物體的,如飲料瓶、零食盒等表面帶有豐富紋理的都屬於這一類。當然,這些物體也還是可以用類似邊緣提取+模板匹配的方法。但是,實際機器人操作過程中,環境會更加復雜:光照條件不確定(光照)、物體距離相機距離不確定(尺度)、相機看物體的角度不確定(旋轉、仿射)、甚至是被其他物體遮擋(遮擋)。

幸好有一位叫做 Lowe 的大神,提出了一個叫做 SIFT (Scale-invariant feature transform)的超強局部特徵點:Lowe, David G. "Distinctive image features from scale-invariant keypoints."International journal of computer vision 60.2 (2004): 91-110.具體原理可以看上面這篇被引用 4萬+ 的論文或各種博客,簡單地說,這個方法提取的特徵點只跟物體表面的某部分紋理有關,與光照變化、尺度變化、仿射變換、整個物體無關。因此,利用 SIFT 特徵點,可以直接在相機圖像中尋找到與資料庫中相同的特徵點,這樣,就可以確定相機中的物體是什麼東西(物體識別)。

對於不會變形的物體,特徵點在物體坐標系下的位置是固定的。所以,我們在獲取若干點對之後,就可以直接求解出相機中物體與資料庫中物體之間的單應性矩陣。如果我們用深度相機(如Kinect)或者雙目視覺方法,確定出每個特徵點的 3D 位置。那麼,直接求解這個 PnP 問題,就可以計算出物體在當前相機坐標系下的位姿。

↑ 這里就放一個實驗室之前畢業師兄的成果當然,實際操作過程中還是有很多細節工作才可以讓它真正可用的,如:先利用點雲分割和歐氏距離去除背景的影響、選用特徵比較穩定的物體(有時候 SIFT 也會變化)、利用貝葉斯方法加速匹配等。而且,除了 SIFT 之外,後來又出了一大堆類似的特徵點,如 SURF、ORB 等。

3. 無紋理的物體

好了,有問題的物體容易解決,那麼生活中或者工業里還有很多物體是沒有紋理的:

我們最容易想到的就是:是否有一種特徵點,可以描述物體形狀,同時具有跟 SIFT 相似的不變性?不幸的是,據我了解,目前沒有這種特徵點。所以,之前一大類方法還是採用基於模板匹配的辦法,但是,對匹配的特徵進行了專門選擇(不只是邊緣等簡單特徵)。

這里,我介紹一個我們實驗室之前使用和重現過的演算法 LineMod:Hinterstoisser, Stefan, et al. "Multimodal templates for real-time detection of texture-less objects in heavily cluttered scenes." Computer Vision (ICCV), 2011 IEEE International Conference on. IEEE, 2011.

簡單而言,這篇論文同時利用了彩色圖像的圖像梯度和深度圖像的表面法向作為特徵,與資料庫中的模板進行匹配。由於資料庫中的模板是從一個物體的多個視角拍攝後生成的,所以這樣匹配得到的物體位姿只能算是初步估計,並不精確。但是,只要有了這個初步估計的物體位姿,我們就可以直接採用 ICP 演算法(Iterative closest point)匹配物體模型與 3D 點雲,從而得到物體在相機坐標系下的精確位姿。

當然,這個演算法在具體實施過程中還是有很多細節的:如何建立模板、顏色梯度的表示等。另外,這種方法無法應對物體被遮擋的情況。(當然,通過降低匹配閾值,可以應對部分遮擋,但是會造成誤識別)。針對部分遮擋的情況,我們實驗室的張博士去年對 LineMod 進行了改進,但由於論文尚未發表,所以就先不過多涉及了。

4. 深度學習

由於深度學習在計算機視覺領域得到了非常好的效果,我們做機器人的自然也會嘗試把 DL 用到機器人的物體識別中。

首先,對於物體識別,這個就可以照搬 DL 的研究成果了,各種 CNN 拿過來用就好了。有沒有將深度學習融入機器人領域的嘗試?有哪些難點? - 知乎 這個回答中,我提到 2016 年的『亞馬遜抓取大賽』中,很多隊伍都採用了 DL 作為物體識別演算法。 然而, 在這個比賽中,雖然很多人採用 DL 進行物體識別,但在物體位姿估計方面都還是使用比較簡單、或者傳統的演算法。似乎並未廣泛採用 DL。 如@周博磊所說,一般是採用 semantic segmentation network 在彩色圖像上進行物體分割,之後,將分割出的部分點雲與物體 3D 模型進行 ICP 匹配。

當然,直接用神經網路做位姿估計的工作也是有的,如這篇:Doumanoglou, Andreas, et al. "Recovering 6d object pose and predicting next-best-view in the crowd." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016.

它的方法大概是這樣:對於一個物體,取很多小塊 RGB-D 數據(只關心一個patch,用局部特徵可以應對遮擋);每小塊有一個坐標(相對於物體坐標系);然後,首先用一個自編碼器對數據進行降維;之後,用將降維後的特徵用於訓練Hough Forest。

5. 與任務/運動規劃結合

這部分也是比較有意思的研究內容,由於機器視覺的目的是給機器人操作物體提供信息,所以,並不限於相機中的物體識別與定位,往往需要跟機器人的其他模塊相結合。

我們讓機器人從冰箱中拿一瓶『雪碧』,但是這個 『雪碧』 被『美年達』擋住了。我們人類的做法是這樣的:先把 『美年達』 移開,再去取 『雪碧』 。所以,對於機器人來說,它需要先通過視覺確定雪碧在『美年達』後面,同時,還需要確定『美年達』這個東西是可以移開的,而不是冰箱門之類固定不可拿開的物體。 當然,將視覺跟機器人結合後,會引出其他很多好玩的新東西。由於不是我自己的研究方向,所以也就不再班門弄斧了。

機器人家上有關於這個很詳細的圖文講解,你可以看下,希望對你有用

㈣ 怎麼E語言怎麼讀取網頁資料庫的數據 有的網頁查看源代碼 視覺內容就找不到 網頁內容也無法復

這個一般成熟點的並褲網站都是看不到的,因為成熟的網站都是專門有一個文件是做數據絕襲簡庫介面,其他頁面執行時只會調用它來讀取資料庫禪汪,所以一般只能靠猜測,小型網站一般來說php的用的大多是mysql,asp的大多是mssql.大型的就不好說了!

㈤ 怎麼獲取網頁源代碼中的文件

獲取網頁源代碼中的文件的具體步驟如下:

1、首先我們在瀏覽器里隨意打開一張網頁查看其源代碼。敗悄

㈥ python如何抓取網頁源代碼中的字元串

使用正則匹配,列:

importrequests
importre

req=requests.get(url)
r=re.findall('<scriptsrc="(.*?)"></script>',req.text)#(.*?)非貪婪匹配
print(r)

自己網上找找python正則方面的知識

㈦ python,求一個簡單的selenium+re的網頁源碼爬取

網頁爬取不一定要用Selenium,Selenium是為了注入瀏覽器獲取點擊行為的調試工具,如果網頁無需人工交互就可以抓取,不建議你使用selenium。要使用它,你需要安裝一個工具軟體,使用Chrome瀏覽器需要下載chromedriver.exe到system32下,如使用firefox則要下載geckodriver.exe到system32下。下面以chromedriver驅動chrome為例:

#-*-coding:UTF-8-*-
fromseleniumimportwebdriver
frombs4importBeautifulSoup
importre
importtime

if__name__=='__main__':

options=webdriver.ChromeOptions()
options.add_argument('user-agent="Mozilla/5.0(Linux;Android4.0.4;GalaxyNexusBuild/IMM76B)AppleWebKit/535.19(KHTML,likeGecko)Chrome/18.0.1025.133MobileSafari/535.19"')
driver=webdriver.Chrome()
driver.get('url')#你要抓取網路文庫的URL,隨便找個幾十頁的替換掉

html=driver.page_source
bf1=BeautifulSoup(html,'lxml')
result=bf1.find_all(class_='rtcspage')
bf2=BeautifulSoup(str(result[0]),'lxml')
title=bf2.div.div.h1.string
pagenum=bf2.find_all(class_='size')
pagenum=BeautifulSoup(str(pagenum),'lxml').span.string
pagepattern=re.compile('頁數:(d+)頁')
num=int(pagepattern.findall(pagenum)[0])
print('文章標題:%s'%title)
print('文章頁數:%d'%num)


whileTrue:
num=num/5.0
html=driver.page_source
bf1=BeautifulSoup(html,'lxml')
result=bf1.find_all(class_='rtcspage')
foreach_resultinresult:
bf2=BeautifulSoup(str(each_result),'lxml')
texts=bf2.find_all('p')
foreach_textintexts:
main_body=BeautifulSoup(str(each_text),'lxml')
foreachinmain_body.find_all(True):
ifeach.name=='span':
print(each.string.replace('xa0',''),end='')
elifeach.name=='br':
print('')
print(' ')
ifnum>1:
page=driver.find_elements_by_xpath("//div[@class='page']")
driver.execute_script('arguments[0].scrollIntoView();',page[-1])#拖動到可見的元素去
nextpage=driver.find_element_by_xpath("//a[@data-fun='next']")
nextpage.click()
time.sleep(3)
else:
break

執行代碼,chromedriver自動為你打開chrome瀏覽器,此時你翻頁到最後,點擊閱讀更多,然後等一段時間後關閉瀏覽器,代碼繼續執行。

㈧ M3U8抓取源代碼

m3u8後面好像可以不要

㈨ php獲取網頁源碼內容有哪些辦法

1、使用file_get_contents獲得網頁源代碼。這個方法最常用,只需要兩行代碼即可,非常簡單方孝春便。

2、使用fopen獲得網頁源代碼。這個方法用的人也不少,不過代碼有點多。

3、使用curl獲得網頁源代碼。使用curl獲得網頁源代碼的做法,往往是需要更高要求的人使用,例如當你需要在抓取網頁內容的同時,得到網頁header信息賣核,還有ENCODING編碼的使,USERAGENT的使用等等。

㈩ php抓取網頁源碼方法

可以使用file_get_content函數來獲取源代碼,你只需要把網站傳入這個函數,獲取後是一個字元串,你需要格式化代碼就可以了

閱讀全文

與視覺源碼抓取相關的資料

熱點內容
凈化車間門演算法 瀏覽:932
安卓怎麼搞jpg 瀏覽:544
如來佛祖命令雷神去下界 瀏覽:854
新電腦管家下載好怎麼解壓 瀏覽:528
php獲取介面數據 瀏覽:763
最後的命令 瀏覽:921
如何添加手機app桌面快捷圖標 瀏覽:427
ui設計師與程序員 瀏覽:417
壽司pdf 瀏覽:828
pythonbg是什麼 瀏覽:248
c數值演算法程序大全 瀏覽:785
android整點報時 瀏覽:221
稀土pdf 瀏覽:536
單片機電子鎖 瀏覽:596
通達信機智資金流指標公式源碼 瀏覽:216
php安裝xsl擴展 瀏覽:842
python如何使用help 瀏覽:367
上汽榮威app在哪裡查詢 瀏覽:903
冰櫃壓縮機溫度108 瀏覽:720
阿里雲郵smtp伺服器地址 瀏覽:253