淘宝爬虫:看看房地产拍卖行情怎么样?附可视化分析

前言

本文为数据采集和分析的综合练习,仅供学习参考,勿作他用!首先来看一下数据需求:
1、进入到住宅用房拍卖页面,以杭州市数据为例;
在这里插入图片描述

2、需要将发布的所有杭州市法拍房的信息整理至 EXCEL 表格中;
在这里插入图片描述
3、部分需求字段在页面中的位置:
在这里插入图片描述
事不宜迟,开工!

一、爬虫篇

1、查询页

1.1、分析网页结构

通过观察可以发现,每页 40 条记录,最大 150 页,也就是说从基本页最多只能获取到 6000 条记录,而杭州市记录总量有 2 万余条。
在这里插入图片描述
但杭州市各区的数据都不超过 6000 条,因此我们可以分区爬取数据。
在这里插入图片描述
接着,在开发者模式下不难找到所需数据的出处。
在这里插入图片描述
我们只需要修改请求连接中的 page 值就可以实现翻页爬取。
在这里插入图片描述

1.2、请求与解析

下面开始编写请求代码,很轻松就能获取到查询页的响应内容。

def search_response(p):  # 爬取查询到的一页数据
    url = f'https://sf.taobao.com/item_list.htm?spm=a213w.7398504.filter.50.70c67db6iX3uXM&location_code=330103&category=50025969&auction_source=0&city=&province=&st_param=-1&auction_start_seg=-1&page={
     p}'
    headers = {
   
        'cookie': cookie,
        'user-agent': "Mozilla/5.0 (Windows NT 6.0; rv:2.0) Gecko/20100101 Firefox/4.0 Opera 12.14",
    }
    res = requests.get(url, headers=headers)
    return res.text

根据网页源码分析,已知查询页的数据是嵌套的 json 列表,储存在 id="sf-item-list-data" 的 script 标签中,笔者采用美丽汤(beautifulsoup)进行解析,该解析器对 HTML 页面相性优异,如果不熟悉万能的正则表达式,推荐尝试。

def analyze(response):  # 解析查询页
    soup = BeautifulSoup(response, "html.parser")
    script_data = soup.find('script', {
   'id': 'sf-item-list-data'}).get_text()
    json_data = json.loads(script_data)
    json_dic_lst = json_data['data']
    total = pd.DataFrame()
    for dic in json_dic_lst:
        df = pd.DataFrame({
   
            'id': [dic['id']],
            'itemUrl': [dic['itemUrl']],
            'title': [dic['title']],
        })
        total = total.append(df)
    return total

最终将各区查询页汇总整理如下,id 为每条房产记录的识别号,用于在最后连接查询页与详情页。
在这里插入图片描述

2、详情页

2.1、关于反爬

详情页(初步的)请求头参数也比较简单,请求地址即是查询页中的 itemUrl,从中可以截取出 track_id 参数。但详情页的反爬比较强烈,笔者采用多 user-agent 与 cookie 的方式来尝试规避,效果仍不够理想,且 cookie 池需要多个账号,之后又增加了代理 IP 池。

ua_lst = ["Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0",
          "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36",
          "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36 SE 2.X MetaSr 1.0",
          "Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14",
          "Mozilla/5.0 (Windows NT 6.0; rv:2.0) Gecko/20100101 Firefox/4.0 Opera 12.14",
         ]
        
cookie_lst = [cookie_1, cookie_2, cookie_3, ...]
    
headers = {
   
            'cookie': random.choice(cookie_lst ),
            'user-agent': random.choice(ua_lst ),
            'accept-encoding': 'gzip, deflate, br',
            'accept-language': 'zh-CN,zh;q=0.9',
            'referer': 'https://sf.taobao.com/item_list.htm?spm=a213w.7398504.filter.49.62a854b3DbBPQy&location_code=330102&category=50025969&auction_source=0&city=&province=&st_param=-1&auction_start_seg=-1',
            'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值