JAVA实现美团电影价格抓取(附代码)
生活随笔
收集整理的這篇文章主要介紹了
JAVA实现美团电影价格抓取(附代码)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
各位老大好,我是烤鴨:
最近在研究爬蟲,看到有意思的是美團的電影票價,普通的抓取是抓不到的。
例如網(wǎng)址:http://bj.meituan.com/shop/105355906?mtt=1.movie/cinemalist.0.0.j8oaf2un(當你打開403或者404的話,美團的這個網(wǎng)址每次刷新都會變。你可以訪問這個,http://bj.meituan.com/shop/105355906,找個影片就行。)打開如圖:
圖片有點看不清,沒關系,如果你也在研究爬蟲,可能會跟我有一樣的疑問,這種怎么實現(xiàn),又怎么破解。
1.分析網(wǎng)頁
普通的爬蟲抓取,只要找到的特定的標簽,抓取其中的內容就可以了。但是有一些比較敏感的數(shù)據(jù),網(wǎng)頁會做處理,比如價格,或者視頻資源之類的。 ?視頻一般的處理方式是blob二進制,存的數(shù)據(jù)就是二進制,取出來的時候瀏覽器可以解析,具體的實現(xiàn)我也不清楚。舉個例子:
http://finance.gaodun.cn/cfapeixun/33049.html
他的視頻路徑就是blob的。
? ? ? ?
而拿美團來說。我們檢查這個價格,發(fā)現(xiàn)是i標簽里引入一張背景圖片,用postion來調整剛好暴露出來的數(shù)字就是價格。知道實現(xiàn)方式就簡單了,就可以對癥下藥了。2.解析元素
復制價格的圖片i標簽的內容。 background-image:url(//s0.meituan.net/bs/file/?f=fewww:/www/css/si/pricesp/12/25a711bd77.png@4344444);background-position: 0px -26px; 注意每一次打開網(wǎng)頁,圖片url都是新的,一次請求抓取這個頁面的全部數(shù)據(jù),不要分次請求。 上面的background-image的url如圖。3.破解圖片
這一步是最復雜的。我用的是開源的工具tesseract-ocr。 附上github地址: https://github.com/tesseract-ocr/tesseract 各個版本下載地址: https://github.com/tesseract-ocr/tesseract/tags 說下思路,如果你用這個工具直接讀取這張圖片,是100%都不出來的,因為圖片分辨率太小,每個數(shù)字占的位置也小。 我想的是最好的就是顯示什么價格,我就截取那個價格的數(shù)字,這樣肯定能夠解析出來。問題來了,怎么取到這個位置。 再看一下i標簽。 background-position: 0px -26px; 試著調整位置,不難發(fā)現(xiàn)規(guī)律,圖片是x,y軸,0,-26:x軸0,y軸-26。知道怎么弄,就開始做吧。 安裝tesseract-ocr,不會安裝的看這個地址吧。
https://www.cnblogs.com/jianqingwang/p/6978724.html。
下載exe正常安裝,配置環(huán)境變量。
說一下tessdata文件夾,里邊裝的是各種訓練庫。eng代表英文和數(shù)字。chs是中文, 但是中文支持不太友好。其他的庫自己下載去吧。我用的eng夠用。
截一張安裝成功的圖。
tesseract -v查看安裝版本
4.最后一步。開始代碼!
之前也說了,每次刷新的價格圖片都是新的,所以我下邊演示圖片的可能和上邊的不一樣。 先上一張識別結果,是我剛試過的:這個價格是1,postion是0,-52。
操作就是按照之前的思路,把這個圖片截取放大,再識別,因為截取的時候沒法精確到個位數(shù),所以只能截取一行來根據(jù)位置識別。右邊的圖片就是截取之后的。 不敢說正確率,只是嘗試了幾個,以上所有內容僅供技術交流,希望大家不要用到其他地方。 最后附上源碼地址: http://download.csdn.net/download/angry_mills/10143366
上面有些截圖可能不是很清楚,沒關系,原理懂了就可以,代碼下載實踐一下,歡迎交流。
總結
以上是生活随笔為你收集整理的JAVA实现美团电影价格抓取(附代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《谭浩强C语言程序设计》 · 素数 7-
- 下一篇: 关于“using namespace s