前言
本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
滑稽研究所 | 作者
滑稽研究所 | 來源
我們可以看到這個網頁上面有我們想要的資訊,有汽車的品牌名以及上半年的銷量總和,通過對比幾個比較有名的車評網,該網站的資料是真實可靠的,
可以看到這個頁面的資料都是存放在許多div標簽里的,屬于同級關系,為什么這個頁面的資料看起來如此簡潔?之前我們爬取豆瓣影評資訊時,頁面會有圖片和超鏈接,這些資訊都需要用單獨的標簽與文字區分出來,而我們本次只需要爬取文字內容,所以標簽看著十分的簡潔,
整塊兒的內容都是在一個大的div標簽下,各個車輛的品牌及銷量又在下一級的div標簽中,我們用遍歷的方法來提取每個div標簽里的內容,
代碼:
import scrapy import plotly as py import plotly.graph_objs as go pyplt = py.offline.plot class CarSpider(scrapy.Spider): name = 'car' start_urls = ['http://www.515fa.com/xldp/dp_22926.html'] def parse(self, response): #print(response.body) for div in response.xpath('//div[@]/div[@]'): name = div.xpath('//div[@]/div/strong/text()').extract()[:10] total = div.xpath('//div[@]/div/text()').re("\\d{5,6}") print(name) print(total) data = [go.Bar( x=total, y=name, orientation='h' )] layout = go.Layout( title='2020年1~6月汽車銷量排行榜' ) figure = go.Figure(data=https://www.cnblogs.com/hhh188764/p/data, layout=layout) pyplt(figure, filename='1.html')
注意這個總結部分和車輛的資訊是同級的div標簽,加上最后一部分我們會拿到十一個div標簽里的內容,但是我們只需要車輛資訊,所以我們只提取十個元素,通過“[:10]”,切片操作來完成,
我們在分析頁面的時候發現,銷量、品牌,測評它們的標簽是一樣的,我們的要么只爬一個div塊兒內的內容,要么全部爬取下來,我們選擇把文字內容全部爬取下來,
我們發現品牌名在strong標簽下,但是銷量卻是和其他通用div標簽,在拿到全部內容之后,通過正則運算式,篩選我們需要的內容,分析資料發現銷量在萬和十萬這樣一個區間,也就是說我們只需要匹配五位數和六位數即可,我們使用re("\\d{5,6}")來篩選,d就是數字的意思后面的引數則是我們想匹配的位數,得到運行結果如下,
對比之后確定就是我們需要的資料,拿到資料之后我們使用plotly庫進行可視化處理,go.Bar是繪制柱狀圖時的方法,x,y需要傳入的是串列形式的資料,折線圖繪制是go.Scatter,不同的圖對應不同的方法,
下面是繪制出來的可互動的銷量排行榜,滑鼠放上去會顯示對應的資訊,相比文字這樣的圖表顯然表現力更好,
資料可視化部分代碼:
import plotly as py import plotly.graph_objs as go pyplt = py.offline.plot #x,y傳入你的資料, data =https://www.cnblogs.com/hhh188764/p/ [go.Bar( x=[], y=[], orientation = 'h' )] layout = go.Layout( title = '輸入你的標題' ) figure = go.Figure(data = https://www.cnblogs.com/hhh188764/p/data, layout = layout) pyplt(figure, filename='1.html')
PS:如有需要Python學習資料的小伙伴可以加下方的群去找免費管理員領取
可以免費領取原始碼、專案實戰視頻、PDF檔案等
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/5081.html
標籤:Python
上一篇:每天都看新聞,怎么看新聞同時又不花時間去找呢?每日新聞獲取
下一篇:14_Web服務器-并發服務器
