爬取手机app实例:fiddler抓包爬取汽车之家

本文介绍如何配置手机代理并使用Fiddler抓取汽车之家APP中二手车数据的详细步骤,通过Python代码解析抓取的数据,提取车名、价格等关键信息,并将其存储为CSV文件。

配置爬取app的东西看此博客

首先手机设置代理,我设置的是手动代理,然后把端口名写为8888和主机名是Ipv4的地址,电脑上的fiddler也设置好就可以开始抓包了

连接好以后,手机打开汽车之家app,点击二手车车源,fiddler抓到包如图(记得要先点一下那个黄条对数据进行解压)
在这里插入图片描述
然后发现手机端的这个数据的结构是及其的简单清晰。
请求头用手机的请求头,然后就可以爬取了

import requests
from lxml import etree
import pandas as pd
import csv
import os

def get_html(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Linux; Android 9; ONEPLUS A6000 Build/PKQ1.180716.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile Safari/537.36 autohomeapp/1.1+%28auto_android%3B9.9.3%3BT1sFhhD74d5Lzdqfy68A54uWVQQFg-_zy6ygMUcD9mIqrPuMbFuGWA%3B9%3BONEPLUS%2BA6000%3B4e9165e6a117c54ba41734298ae9b5ae%29 auto_android/9.9.3 nettype/wifi',
    }
    try:
        response = requests.get(url, headers=headers)
        if response.status_code == 200:
            return response.content.decode()
        else:
            print('1')
            return None
    except:
        print('2')
        return None

def get_info(html):
    selector = etree.HTML(html)
    a_list = selector.xpath('//li/a')
    info_list = list()
    for a in a_list:
        try:
            title = a.xpath('h3/text()')[0]
            where = a.xpath('p/text()')[0].strip().split('/')[0]
            gone = a.xpath('p/text()')[0].strip().split('/')[1]
            release_time = a.xpath('p/text()')[0].strip().split('/')[2]
            infos = a.xpath('ins//text()')
            price = infos[0] + infos[1]
            infos[:2] = []#对列表前两个元素进行删除    
            advantage = ','.join(infos) if len(infos) != 0 else '无'
            list_one = [title, price, where, gone, release_time, advantage]
            print(list_one)
            info_list.append(list_one)
        except:
            pass
    write_file(info_list)

def write_file(info_list):
    file_size = os.path.getsize('D:/汽车之家2.csv')
    if file_size == 0:
        first = ['车名', '价格', '所在地', '已走路程', '购买年份', '好处']
        writer = pd.DataFrame(columns=first, data=info_list)
        writer.to_csv('D:/汽车之家2.csv', encoding='utf-8',index=False)
    else:
        with open('D:/汽车之家2.csv', 'a+', encoding='utf-8', newline='') as fp:
            writer = csv.writer(fp)
            writer.writerows(info_list)

if __name__ == '__main__':
    urls = ['https://m.che168.com/app/quanguo/list/?sourcename=mainapp&safe={}&pvareaid=106365'.format(i) for i in range(1,21)]
    for url in urls:
        html = get_html(url)
        get_info(html)
        

最后结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值