python+requests爬取汽车之家二手车

本文介绍使用Python和requests库从汽车之家网站爬取贵阳地区二手车信息的方法,包括分析网页结构、提取关键数据并保存至Excel文件的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python+requests爬取汽车之家贵阳二手车信息

目录

  1. 分析网页
    1.1. 打开网页,获取请求路径
    1.2. 找到自己需要的信息
  2. 提取数据
    2.1 定位元素,找到数据
    2.2 处理数据,将数据封装成数组
    2.3 保存到excel表格中
  3. 源码展示
    3.1 源码及优化

1.分析网页

1 打开网页,获取请求路径
在这里插入图片描述
于是请求路径为:

import requests
from bs4 import BeautifulSoup

html = requests.get('https://www.che168.com/nlist/guiyang/list/?pvareaid=100533')
print(html.text)

在这里插入图片描述
2 找到自己需要的信息
在页面上:右键->检查 或者 直接按f12
在这里插入图片描述
点击图片上红框的按钮,定位自己需要的信息
在这里插入图片描述
找到对应信息,去页面查询是否是异步加载
在这里插入图片描述
在打印的代码中我们找到了我们要的信息
在这里插入图片描述
到这里就可以笑了,因为这不是异步加载,我们可以直接拿数据了

2.提取数据

  1. 定位元素,找到数据
    将元素定位到上面我们找到的a标签下carinfo
    代码:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html.text, 'html.parser')
lists = soup.select('a.carinfo')
for data in lists:
    print(data.text)

结果如下
在这里插入图片描述

  1. 处理数据,将数据封装成数组
lists = soup.select('a.carinfo')
result = []
arr = []
arr2 = []
for data in lists:
    name = data.select_one('h4').text
    car = data.select_one('p').text
    price = data.select_one('span').text
    value = data.select_one('s').text
    string = name + ',' + car + ',' + price + ',' + value
    arr = string.split(',')
    print(arr)
	result.append(arr)
print(result)

运行代码查看结果:
在这里插入图片描述
3. 保存到excel表格中
代码:

from openpyxl import Workbook
import xlsxwriter

wb = xlsxwriter.Workbook('汽车之家二手车.xlsx', {'constant_memory': True})
ws = wb.add_worksheet('二手车信息')
head = ['车辆型号', '关于', '现价', '原价', '链接']
ws.write_row(0, 0, head)
m = 1
for val in result:
    for j in range(len(val)):
        ws.write_row(m, 0, val)
    m = m + 1
wb.close()

运行结果:
在这里插入图片描述
在这里插入图片描述

3.源码展示

源码及优化:

import requests
import xlwt
from bs4 import BeautifulSoup
from time import sleep
from openpyxl import Workbook
import xlsxwriter, time
import numpy as np
import pandas as pd

def getHtml(url, m):
    start_time = time.time()
    html = requests.get(url)
    # print(html.text)
    wb = xlsxwriter.Workbook('汽车之家.xlsx', {'constant_memory': True})
    ws = wb.add_worksheet('二手车信息')
    head = ['车辆型号', '关于', '现价', '原价', '链接']
    ws.write_row(0, 0, head)
    page = int(input('请输入爬取的页数:'))
    p = 1
    for i in range(page+1):
        soup = BeautifulSoup(html.text, 'html.parser')
        lists = soup.select('a.carinfo')
        if i < page:
            print('共%s页,正在爬取第%s页......' % (page, p))
            result = []
            arr = []
            arr2 = []
            urls = 'https://www.che168.com/'
            k = 1
            for data in lists:
                if k <= len(lists):
                    link = urls + data.get('href')
                    print('共%s条,正在爬取第%s条......url:%s' % (len(lists), k, link))
                    arr2.append(link)
                    str = data
                    name = str.select_one('h4').text
                    car = str.select_one('p').text
                    price = str.select_one('span').text
                    value = str.select_one('s').text
                    string = name+','+car+','+price+','+value
                    arr = string.split(',')
                    arr.extend(arr2)
                    arr2 = []
                    result.append(arr)
                    k = k + 1
                else:
                    break
            print(result)
            # 写入表格
            for val in result:
                for j in range(len(val)):
                    ws.write_row(m, 0, val)
                m = m + 1
                # print(m)
            # result.clear()
            next = soup.select_one('a.page-item-next').get('href')
            next_page = urls + next
            html = requests.get(next_page)
            sleep(2)
            p = p + 1
    wb.close()
    end_time = time.time()
    print('本次爬取共耗时%s秒'%(end_time-start_time))



if __name__=="__main__":
    m = 1
    url = 'https://www.che168.com/nlist/guiyang/list/?pvareaid=100533'
    getHtml(url, m)
### 创建用于抓取汽车之家新能源二手车数据的Python爬虫 为了构建一个专门针对汽车之家网站上的新能源二手车信息的网络爬虫,可以采用 `requests` 和 `BeautifulSoup` 库来处理网页请求和HTML解析。考虑到目标页面可能具有复杂的JavaScript渲染机制,有时也需要借助Selenium这样的工具模拟浏览器行为。 #### 准备工作 安装必要的库可以通过pip完成: ```bash pip install requests beautifulsoup4 pandas selenium ``` #### 获取并解析网页内容 下面是一个简单的例子展示如何发起HTTP GET请求以及初步的数据提取过程: ```python import requests from bs4 import BeautifulSoup def fetch_page(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', } response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, "html.parser") return soup ``` 此函数会返回一个包含整个文档树的对象,允许进一步操作以定位所需的信息节点[^1]。 #### 数据抽取逻辑 对于特定类型的车辆列表页,假设每辆车的相关详情都封装在一个类名为`.car-item` 的div标签内,则可定义如下方法来进行具体字段的读取: ```python def parse_cars(soup): cars_info = [] items = soup.select(".car-item") # 这里".car-item"应替换为实际使用的CSS选择器 for item in items: title = item.find("h2").get_text(strip=True) price = item.select_one(".price span").text.strip() car_data = {"title": title, "price": price} cars_info.append(car_data) return cars_info ``` 上述代码片段展示了从每个商品条目中提取名称和价格两个属性的方式;当然,在真实场景下还需要考虑更多细节如异常情况下的错误处理等[^2]。 #### 存储收集到的数据 最后一步就是将获得的结果保存下来以便后续分析使用。这里再次强调了CSV作为一种轻量级但非常实用的数据交换格式的重要性: ```python import pandas as pd def save_to_file(cars_list, filename="cars.csv"): df = pd.DataFrame(cars_list) df.to_csv(filename, index=False, encoding='utf_8_sig') ``` 通过调用这个辅助功能,能够轻松地把内存中的字典数组转换成表格形式,并写入本地磁盘文件之中[^3]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值