首頁 > 軟體

Python採集二手車資料的超詳細講解

2023-12-20 14:00:25

資料採集

XPath,XML路徑語言的簡稱。XPath即為XML路徑語言(XML Path Language),它是一種用來確定XML檔案中某部分位置的語言。XPath主要用於解析XML檔案,可以用來獲取XML檔案中某個元素的位置、屬性值等資訊。XPath可以用於XML檔案解析、XML資料抽取、XML路徑匹配等方面。

傳送請求

首先,我們要進行資料來源分析,知道我們的需求是什麼?

明確需求:

  • 明確採集網站是什麼?
  • 明確採集資料是什麼?

        車輛基本資訊

然後,我們分析車輛基本資訊資料, 具體是請求那個網址可以得到我們想要的資料。

通過開發者工具, 進行抓包分析:

開啟開發者工具: F12 / 滑鼠右鍵點選檢查選擇network

重新整理網頁: 讓本網頁資料內容重新載入一遍 <方便分析資料出處>

搜尋資料來源: 複製你想要的內容, 進行搜尋即可

    import requests
    url = 'https://www.che168.com/china/a0_0msdgscncgpi1ltocsp1exx0/'
    header = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'}
    res = requests.get(url,headers=headers)

我們和之前一樣,獲取資料,我們會發現,車輛的基本資訊就在網頁原始碼中,我們今天就用xpath的方法來解析資料。

解析資料

接下來,我們用xpath解析資料。我們用開發者工具定位到標籤位置。

 我們通過網頁原始碼,我們可以獲取到每一個網頁的url。

    selector=parsel.Selector(res.text)
    detail_url_list = selector.xpath('//ul[@class="viewlist_ul"]/li/a[@class="carinfo"]/@href').getall()

我們可以看到,得到下面資料。

我們會發現,我們得到了兩種網頁,所以,在這裡我們拼接網頁就需要注意,這裡,我不多說,直接看我是怎麼寫的。

        if detail_url.split('/') == '':
            detail_url = 'https:'+detail_url
        else:
            detail_url = 'https://www.che168.com'+detail_url

這樣,我們就得到了每一個車輛資訊的資料網頁,看看執行之後的效果吧。

接下來,我們就依次存取某個連結,獲取我們想要的資料。

    responses = requests.get(detail_url,headers=headers)
    detail_selector = parsel.Selector(responses.text)

我用不同顏色標註的,就是我們這次想要獲取的資料,我們這裡以車輛名稱為例,講解下path如何寫。

title = detail_selector.xpath('string(//h3[@class="car-brand-name"])').get("").strip()

我們看看網頁原始碼是如何得到的xpath。

 可能有人就要問了,這個

("").strip()

是什麼意思?這個就是去除空格的,只是為了後期資料的美觀。

後面的我就不一一展示了,我直接放程式碼了,不懂的在評論區交流。

tableShowMileage = detail_selector.xpath('//ul[@class="brand-unit-item fn-clear"]/li[1]/h4/text()').get("").strip()
theRegistrationTime = detail_selector.xpath('//ul[@class="brand-unit-item fn-clear"]/li[2]/h4/text()').get("").strip()
blockADisplacement = detail_selector.xpath('//ul[@class="brand-unit-item fn-clear"]/li[3]/h4/text()').get("").strip()
addr = detail_selector.xpath('//ul[@class="brand-unit-item fn-clear"]/li[4]/h4/text()').get("").strip()
guobiao = detail_selector.xpath('//ul[@class="brand-unit-item fn-clear"]/li[5]/h4/text()').get("").strip()
price = detail_selector.xpath('string(//span[@id="overlayPrice"])').get()

我們列印這些資料,看看效果吧。

可能大家注意到了,有返回空值的,這個可能就是被反爬,大家感興趣可以用代理IP試試。 

儲存資料

和我們上一篇一樣,我們先寫入字典,然後在寫入csv檔案裡面。

        dit ={
            '車輛':title,
            '表顯里程':tableShowMileage,
            '上牌時間':theRegistrationTime,
            '擋位/排量':blockADisplacement,
            '車輛所在地':addr,
            '檢視限遷地':guobiao,
            '價格':price,
        }
        csv_writer.writerow(dit)

大家感興趣還可以獲取車輛資訊更詳細的資料,其實原理都是一樣的。

總結

通過本文的學習,我們學習了資料採集。我們在採集資料的時候,遇到各種問題,自己在嘗試解決問題,也是在一種學習,本次實戰,我們明白如何使用xpath解析資料。

以上就是Python採集二手車資料的超詳細講解的詳細內容,更多關於Python採集二手車資料的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com