目标地址
分析返回的数据(静态数据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
# 房子详情 1室0厅 | 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还是更方便些,使用起来也更简单