18行代碼搞定python爬蟲:爬取58同城二手車信息並保存爲Excel文件,python小白必看!

hello大家好,
我是你們的可愛丸,
今天我要和大家分享案例是
一個只有18行代碼的python爬蟲。在這裏插入圖片描述麻雀雖小五臟俱全,
大家別看這個案例的代碼數量少,
但它卻可以同時實現數據爬取和保存功能,
現在你是不是迫不及待的想要學習了呢?
那麼接下來我就帶着大家一起來詳細學習吧!

代碼運行效果在這裏插入圖片描述
詳細教程
1、目標網頁及網頁數據查看方法
我們今天要爬的網頁是58同城的二手車信息頁面,地址爲:https://nn.58.com/ershouche/?PGTID=0d100000-0034-d9f8-fe87-cbe415320007&utm_source=market&spm=u-2d2yxv86y3v43nkddh1.BDPCPZ_BT&ClickID=56
在這裏插入圖片描述
我們需要把目標網頁中的二手車名稱、描述信息以及價格等信息爬取下來並保存,那麼如何查看這些信息呢?查看的方法爲:鼠標右鍵選擇檢查,然後再點擊底部窗口上左上角的小箭頭,再把小箭頭移到對應信息的位置就可以看到它的對應代碼啦,如下圖所示:
在這裏插入圖片描述
2、導入需要用到的模塊並做數據解析前準備工作

#導入本代碼需要用到的模塊
import requests
from bs4 import BeautifulSoup
import xlsxwriter

#設置請求頭,模仿瀏覽器訪問
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}
#設置想要爬取的網頁鏈接
url = 'https://nn.58.com/ershouche/?utm_source=market&spm=u-2d2yxv86y3v43nkddh1.
BDPCPZ_BT&PGTID=0d100000-0034-d9f8-fe87-cbe415320007&ClickID=4'

#做數據解析前的準備
response = requests.get(url, headers=headers)
content = response.content
soup = BeautifulSoup(content, 'lxml')

3、獲取對應數據
通過BeautifulSoup尋找所有class屬性爲“info_link”的span標籤,並通過get_text()方法獲得標籤中的所有文本信息
在這裏插入圖片描述
在這裏插入圖片描述
因爲文本信息中包含有換行符,爲了保證文本的可讀性及美觀,通過repalce()方法將文本數據中的換行替換爲空格。
在這裏插入圖片描述
使用同樣的方法獲得汽車描述信息數據
在這裏插入圖片描述
在這裏插入圖片描述
使用同樣的方法獲得汽車價格信息數據
在這裏插入圖片描述
在這裏插入圖片描述4、將數據寫入excel並保存
通過len()方法可以獲取到所有汽車信息的數量,再對這些信息進行遍歷,逐個寫入
excel文件中並保存。

#創建名爲58car.xlsx的excel文件
workbook = xlsxwriter.Workbook('58car.xlsx')
#在excel文件中添加一個sheet工作表
worksheet = workbook.add_worksheet()
#獲取所有的汽車名稱,並存儲在一個列表裏
name_list = soup.find_all('span',attrs={'class':'info_link'})
#獲取所有的汽車描述信息,並存儲在一個列表裏
describe_list = soup.find_all('div',attrs={'class':'info_params'})
#獲取所有的汽車價格信息,並存儲在一個列表裏
price_list = soup.find_all('div',attrs={'class':'info--price'})
#通過len()方法得到汽車信息個數並進行遍歷
for i in range(len(name_list)):
    #在第i行第1列寫入第i輛汽車的名稱
    worksheet.write(i, 0, name_list[i].get_text().replace("\n", ""))
    # 在第i行第2列寫入第i輛汽車的描述信息
    worksheet.write(i, 1, describe_list[i].get_text())
    # 在第i行第3列寫入第i輛汽車的價格信息
    worksheet.write(i, 2, price_list[i].get_text().replace("\n", ""))
#數據寫入完畢後將表格關閉
workbook.close()

代碼運行結束後,會在爬蟲文件同級目錄下自動創建保存數據的excel表格

5、完整代碼

# 微信公衆號:chimuyhs 【可愛丸學python】 關注並回復:源碼  即可獲取源代碼
# QQ學習交流羣:983460742

#導入本代碼需要用到的模塊
import requests
from bs4 import BeautifulSoup
import xlsxwriter

#設置請求頭,模仿瀏覽器訪問
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}
#設置想要爬取的網頁鏈接
url = 'https://nn.58.com/ershouche/?utm_source=market&spm=u-2d2yxv86y3v43nkddh1.
BDPCPZ_BT&PGTID=0d100000-0034-d9f8-fe87-cbe415320007&ClickID=4'

response = requests.get(url, headers=headers)
content = response.content
soup = BeautifulSoup(content, 'lxml')
#創建名爲58car.xlsx的excel文件
workbook = xlsxwriter.Workbook('58car.xlsx')
#在excel文件中添加一個sheet工作表
worksheet = workbook.add_worksheet()
#獲取所有的汽車名稱,並存儲在一個列表裏
name_list = soup.find_all('span',attrs={'class':'info_link'})
#獲取所有的汽車描述信息,並存儲在一個列表裏
describe_list = soup.find_all('div',attrs={'class':'info_params'})
#獲取所有的汽車價格信息,並存儲在一個列表裏
price_list = soup.find_all('div',attrs={'class':'info--price'})
#通過len()方法得到汽車信息個數並進行遍歷
for i in range(len(name_list)):
    #在第i行第1列寫入第i輛汽車的名稱
    worksheet.write(i, 0, name_list[i].get_text().replace("\n", ""))
    # 在第i行第2列寫入第i輛汽車的描述信息
    worksheet.write(i, 1, describe_list[i].get_text())
    # 在第i行第3列寫入第i輛汽車的價格信息
    worksheet.write(i, 2, price_list[i].get_text().replace("\n", ""))
#數據寫入完畢後將表格關閉
workbook.close()

今天的教程就到這裏啦,感謝大家的閱讀,本教程的初衷是想給python初學者一個練手的機會,因此對於二手車價格亂碼以及爬蟲分頁方面不做處理,如果想了解本案例的優化方法,那麼記得關注我哦,我將定期和大家分享python相關知識~我們下次見_

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章