欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

抓取链家福田店二手房的所有数据

最编程 2024-06-28 20:19:54
...

目标地址

sz.lianjia.com/ershoufang/…

分析返回的数据(静态数据or动态数据)

  • 通过浏览器查看网页源代码,可以看到所需要的数据,可以判断数据是静态数据
  • 也可以通过网络请求分析,在响应中就可以看到所需要的数据

发送请求

看请求方法知道了GET请求

通过requests发送get请求

   response = requests.get(url, headers=headers)

处理数据通过BeautifulSoup处理

  • 分析返回的数据格式
  • 所有的房产信息都是在ul标签下的li标签中
  • 通过bs4获取该ul下所有的li标签,soup.select('ul.sellListContent li')
  • 然后对li标签进行单独处理,这里单个处理li标签比较方便
   # 获取房子所有的li标签
    lis = soup.select('ul.sellListContent li')
    for li in lis:
        # 标题
        item = {'title': li.select('div a')[1].text}
        # 地址信息,因为地址信息在两个a标签中,特殊处理下
        positions = li.select('div.positionInfo a')
        address = ''
        for position in positions:
            address += position.text
        item['address'] = address
        # 房子详情 10厅 | 34.46平米 | 西 | 简装 | 中楼层(共9层) | 2002年建 | 板塔结合
        house_info = li.select_one('div.houseInfo').text
        item['info'] = house_info
        # 关注信息
        item['followInfo'] = li.select_one('div.followInfo').text
        # 总价
        item['totalPrice'] = li.select_one('div.totalPrice').text
        # 单价
        item['unitPrice'] = li.select_one('div.unitPrice').text
        item['tag'] = li.select_one('div.tag').text

获取所有页面信息

  • for循环批量处理
for page in range(1, 101):
    # 防止请求过快,被封IP
    time.sleep(random.randint(1, 3))
    url = f"https://sz.lianjia.com/ershoufang/futianqu/pg{page}/"

保存数据到cxv

  • 通过pandas比较方便的保存到表格中
df = pd.DataFrame(data, columns=['title', 'address', 'info', 'followInfo', 'totalPrice', 'unitPrice', 'tag'])
df.to_excel('深圳福田二手房数据.xlsx')

所需要的模块

import random

from bs4 import BeautifulSoup
import requests
import time
import pandas as pd

数据展示

总结:

这次我们使用了bs4对页面数据进行了解析,发现比xpath还是更方便些,使用起来也更简单

推荐阅读