??????????歡迎來到我的博客??????????
??作者:秋無之地??簡介:CSDN爬蟲、后端、大數(shù)據(jù)領(lǐng)域創(chuàng)作者。目前從事python爬蟲、后端和大數(shù)據(jù)等相關(guān)工作,主要擅長領(lǐng)域有:爬蟲、后端、大數(shù)據(jù)開發(fā)、數(shù)據(jù)分析等。
??歡迎小伙伴們點(diǎn)贊????、收藏??、留言??、關(guān)注??,關(guān)注必回關(guān)
一、確定目標(biāo)數(shù)據(jù)
1、先打開目標(biāo)網(wǎng)站,找到目標(biāo)數(shù)據(jù)所在的頁面
?
2、找到目標(biāo)數(shù)據(jù)所在的api或頁面
通過f12打開調(diào)試模式,通過搜索關(guān)鍵詞,找到關(guān)鍵詞所在的api或頁面
3、觀察請求參數(shù)
1)header參數(shù):沒有加密數(shù)據(jù),無需登錄因此不用cookie
2)翻頁:url參數(shù)變動了,0-1表示第一頁,0-3表示第三頁。
二、請求接口
使用requests庫請求接口,返回?cái)?shù)據(jù)
def get_data(self,page=1):
'''請求接口'''
url = f"https://car.autohome.com.cn/price/list-15_20-0-0-0-0-0-0-0-0-0-0-0-0-0-0-{page}.html"
res = requests.get(url=url, headers=self.header).text
# print(res)
#返回?cái)?shù)據(jù)
if '用戶評分' in res:
return res
else:
return ""
三、數(shù)據(jù)解析
將返回的數(shù)據(jù)進(jìn)行正則匹配,然后通過遍歷提取目標(biāo)數(shù)據(jù)
def data_deal(self,data_text=None):
'''數(shù)據(jù)解析'''
new_list = []
#詳情鏈接+車名
url_name_li = re.findall(r'<a href="/price/series-(\d+).html#pvareaid=(\d+)" target="_self" class="font-bold">(.*?)</a>',data_text)
#用戶評分
score_number_li = re.findall(r'<span class="score-number">(.*?)</span>',data_text)
#級別
info_gray_li = re.findall(r'別:<span class="info-gray">(.*?)</span>',data_text)
#官方指導(dǎo)價
price_li = re.findall(r'指導(dǎo)價:<span class="lever-price red"><span class="font-arial">(.*?)</span>',data_text)
for i in range(len(url_name_li)):
url_id1,url_id2,car_name = url_name_li[i]
# 詳情鏈接
info_url = f'https://car.autohome.com.cn/price/series-{url_id1}.html#pvareaid={url_id2}'
# 用戶評分
score_number = score_number_li[i]
# 級別
info_gray = info_gray_li[i]
# 官方指導(dǎo)價
price = price_li[i]
new_list.append([car_name,info_url,score_number,info_gray,price])
return new_list
四、數(shù)據(jù)存儲
數(shù)據(jù)解析后,對數(shù)據(jù)進(jìn)行拼接,然后持久化,存在csv文件
def data_to_csv(self,data_li=None):
'''數(shù)據(jù)存儲'''
df = pd.DataFrame(data_li)
df.to_csv("test2.csv", index=False)
文件內(nèi)容:
五、完整代碼
完整代碼如下:
# -*- coding: utf-8 -*-
import math
import re
import requests
import pandas as pd
class Car_home_class():
'''汽車之家'''
def __init__(self):
self.header = {
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
"Referer":"https://car.autohome.com.cn/price/list-15_20-0-0-0-0-0-0-0-0-0-0-0-0-0-0-1.html",
}
def get_data(self,page=1):
'''請求接口'''
url = f"https://car.autohome.com.cn/price/list-15_20-0-0-0-0-0-0-0-0-0-0-0-0-0-0-{page}.html"
res = requests.get(url=url, headers=self.header).text
# print(res)
#返回?cái)?shù)據(jù)
if '用戶評分' in res:
return res
else:
return ""
def data_deal(self,data_text=None):
'''數(shù)據(jù)解析'''
new_list = []
#詳情鏈接+車名
url_name_li = re.findall(r'<a href="/price/series-(\d+).html#pvareaid=(\d+)" target="_self" class="font-bold">(.*?)</a>',data_text)
#用戶評分
score_number_li = re.findall(r'<span class="score-number">(.*?)</span>',data_text)
#級別
info_gray_li = re.findall(r'別:<span class="info-gray">(.*?)</span>',data_text)
#官方指導(dǎo)價
price_li = re.findall(r'指導(dǎo)價:<span class="lever-price red"><span class="font-arial">(.*?)</span>',data_text)
for i in range(len(url_name_li)):
url_id1,url_id2,car_name = url_name_li[i]
# 詳情鏈接
info_url = f'https://car.autohome.com.cn/price/series-{url_id1}.html#pvareaid={url_id2}'
# 用戶評分
score_number = score_number_li[i]
# 級別
info_gray = info_gray_li[i]
# 官方指導(dǎo)價
price = price_li[i]
new_list.append([car_name,info_url,score_number,info_gray,price])
return new_list
def data_to_csv(self,data_li=None):
'''數(shù)據(jù)存儲'''
df = pd.DataFrame(data_li)
df.to_csv("test2.csv", index=False)
def run(self):
# 翻頁獲取數(shù)據(jù)
all_list = []
all_list.append(["車名", "詳情鏈接", "用戶評分", "級別", "官方指導(dǎo)價"])
#爬取10頁
for page in range(1,2):
print("當(dāng)前頁數(shù):",page)
data_text = self.get_data(page=page)
out_date = self.data_deal(data_text=data_text)
print("*"*100)
print(out_date)
all_list += out_date
self.data_to_csv(data_li=all_list)
if __name__ == '__main__':
ddc = Car_home_class()
ddc.run()
六、總結(jié)
Python爬蟲主要分三步:文章來源:http://www.zghlxwxcb.cn/news/detail-760481.html
- 請求接口
- 數(shù)據(jù)解析
- 數(shù)據(jù)存儲
版權(quán)聲明
本文章版權(quán)歸作者所有,未經(jīng)作者允許禁止任何轉(zhuǎn)載、采集,作者保留一切追究的權(quán)利。文章來源地址http://www.zghlxwxcb.cn/news/detail-760481.html
到了這里,關(guān)于Python爬蟲:汽車之家爬蟲(完整代碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!