• Python爬虫:如何下载汽车之家的数据(完整代码)


    ⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️
    🐴作者:秋无之地

    🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据开发、数据分析等。

    🐴欢迎小伙伴们点赞👍🏻、收藏⭐️、留言💬、关注🤝,关注必回关

    一、确定目标数据

    1、先打开目标网站,找到目标数据所在的页面

    2、找到目标数据所在的api或页面

    通过f12打开调试模式,通过搜索关键词,找到关键词所在的api或页面

    3、观察请求参数

    1)header参数:没有加密数据,无需登录因此不用cookie

    2)翻页:url参数变动了,0-1表示第一页,0-3表示第三页。

    二、请求接口

    使用requests库请求接口,返回数据

    1. def get_data(self,page=1):
    2. '''请求接口'''
    3. 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"
    4. res = requests.get(url=url, headers=self.header).text
    5. # print(res)
    6. #返回数据
    7. if '用户评分' in res:
    8. return res
    9. else:
    10. return ""

    三、数据解析

    将返回的数据进行正则匹配,然后通过遍历提取目标数据

    1. def data_deal(self,data_text=None):
    2. '''数据解析'''
    3. new_list = []
    4. #详情链接+车名
    5. url_name_li = re.findall(r'(.*?)',data_text)
    6. #用户评分
    7. score_number_li = re.findall(r'(.*?)',data_text)
    8. #级别
    9. info_gray_li = re.findall(r'别:(.*?)',data_text)
    10. #官方指导价
    11. price_li = re.findall(r'指导价:(.*?)',data_text)
    12. for i in range(len(url_name_li)):
    13. url_id1,url_id2,car_name = url_name_li[i]
    14. # 详情链接
    15. info_url = f'https://car.autohome.com.cn/price/series-{url_id1}.html#pvareaid={url_id2}'
    16. # 用户评分
    17. score_number = score_number_li[i]
    18. # 级别
    19. info_gray = info_gray_li[i]
    20. # 官方指导价
    21. price = price_li[i]
    22. new_list.append([car_name,info_url,score_number,info_gray,price])
    23. return new_list

    四、数据存储

    数据解析后,对数据进行拼接,然后持久化,存在csv文件

    1. def data_to_csv(self,data_li=None):
    2. '''数据存储'''
    3. df = pd.DataFrame(data_li)
    4. df.to_csv("test2.csv", index=False)

    文件内容:

    五、完整代码

    完整代码如下:

    1. # -*- coding: utf-8 -*-
    2. import math
    3. import re
    4. import requests
    5. import pandas as pd
    6. class Car_home_class():
    7. '''汽车之家'''
    8. def __init__(self):
    9. self.header = {
    10. "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",
    11. "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",
    12. }
    13. def get_data(self,page=1):
    14. '''请求接口'''
    15. 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"
    16. res = requests.get(url=url, headers=self.header).text
    17. # print(res)
    18. #返回数据
    19. if '用户评分' in res:
    20. return res
    21. else:
    22. return ""
    23. def data_deal(self,data_text=None):
    24. '''数据解析'''
    25. new_list = []
    26. #详情链接+车名
    27. url_name_li = re.findall(r'(.*?)',data_text)
    28. #用户评分
    29. score_number_li = re.findall(r'(.*?)',data_text)
    30. #级别
    31. info_gray_li = re.findall(r'别:(.*?)',data_text)
    32. #官方指导价
    33. price_li = re.findall(r'指导价:(.*?)',data_text)
    34. for i in range(len(url_name_li)):
    35. url_id1,url_id2,car_name = url_name_li[i]
    36. # 详情链接
    37. info_url = f'https://car.autohome.com.cn/price/series-{url_id1}.html#pvareaid={url_id2}'
    38. # 用户评分
    39. score_number = score_number_li[i]
    40. # 级别
    41. info_gray = info_gray_li[i]
    42. # 官方指导价
    43. price = price_li[i]
    44. new_list.append([car_name,info_url,score_number,info_gray,price])
    45. return new_list
    46. def data_to_csv(self,data_li=None):
    47. '''数据存储'''
    48. df = pd.DataFrame(data_li)
    49. df.to_csv("test2.csv", index=False)
    50. def run(self):
    51. # 翻页获取数据
    52. all_list = []
    53. all_list.append(["车名", "详情链接", "用户评分", "级别", "官方指导价"])
    54. #爬取10页
    55. for page in range(1,2):
    56. print("当前页数:",page)
    57. data_text = self.get_data(page=page)
    58. out_date = self.data_deal(data_text=data_text)
    59. print("*"*100)
    60. print(out_date)
    61. all_list += out_date
    62. self.data_to_csv(data_li=all_list)
    63. if __name__ == '__main__':
    64. ddc = Car_home_class()
    65. ddc.run()

    六、总结

    Python爬虫主要分三步:

    1. 请求接口
    2. 数据解析
    3. 数据存储

    版权声明

    本文章版权归作者所有,未经作者允许禁止任何转载、采集,作者保留一切追究的权利。

  • 相关阅读:
    接口自动化测试之预期结果的处理
    如何将gif变成视频?3个转换方法
    centos7下 编译coreboot生成真机可用的bios固件, 并在真机上演示 (上篇)
    【Python自动化】定时自动采集,并发送微信告警通知,全流程案例讲解!
    docker作业
    9.16 Day53---登录服务器
    android 12 /mnt/media
    边界扫描SAMPLE指令
    NR 5G 终端TMSI上报
    PHP如何对二维数组(多维数组)进排序
  • 原文地址:https://blog.csdn.net/weixin_42108731/article/details/132906454