信息大爆炸的时代,你怎么高效获取有效信息?
本次小案例同样是利用python当中两个关键库,requests和BeautifulSoup,发起请求,解析网页数据,对这两个库的使用不太熟悉的小伙伴可以网上查查资料学习一下,我就不在这过多解释了,主要聊一下怎么用
1、首先,一定要在代码文件开头,将两个工具库导入
import requests
from bs4 import BeautifulSoup
2、两个库准备好之后,就可以将发起请求的功能封装在函数体当中
# 获取当前url下的页面内容,返回soup对象
def get_page(link_url):
response = requests.get(link_url)
soup = BeautifulSoup(response.text, 'lxml')
return soup
3、请求发起之后,分析网页代码,找到我们想要的具体链接,存入到列表当中
# 获取所有房源链接
def get_links(url):
soup = get_page(url)
# find_all是获取全部信息
link_div = soup.find_all('div', class_='content__list--item') # 获取到包含链接的div
links = [url+div.a.get('href') for div in link_div] # 列表推导式打印所有房源url
return links
利用find_all函数获取soup对象当中所有的content__list–item,将对应的url获取到,并存入列表
4、批量获取到我们的链接信息之后,深入到链接所对应的界面,分析网页端代码,将其封装到函数体中
find函数获得单条数据,找到对应div和相应的class的值进行锁定**
money = page_res.find('div', class_='content__aside--title')
danwei = page_res.find('div', class_ = 'content__aside--title')
5、其他的信息同样道理,组合使用find_all和find方法获取相应信息
# 房屋信息
house_info = page_res.find_all('div', class_ = 'content__article__info')
house_title = page_res.find('p', class_ = 'content__title')# 房源标题
# 基本信息
base_info = page_res.find_all('li', class_ = 'fl oneline') # 以列表存储
area = base_info[1].text[3:] # 面积
direction = base_info[2].text[3:]
weihu = base_info[4].text[3:]
ruzhu = base_info[5].text[3:]
floor = base_info[7].text[3:]
dianti = base_info[8].text[3:]
chewei = base_info[10].text[3:]
water = base_info[11].text[3:] # 用水
elec = base_info[13].text[3:] # 用电
ranqi = base_info[14].text[3:] # 燃气
cainuan = base_info[16].text[3:] # 采暖
zuqi = base_info[18].text[3:] # 租期
kanfang = base_info[21].text[3:] # 看房
6、使用字典进行存储,方便管理
global info
info = {
"房屋标题":house_title.text,
"房屋链接":i,
"价格":money.find('span').text+danwei.text[5:8],
"面积":area,
"朝向":direction,
"维护":weihu,
"入住":ruzhu,
"楼层":floor,
"电梯":dianti,
"车位":chewei,
"用水":water,
"用电":elec,
"燃气":ranqi,
"采暖":cainuan,
"租期":zuqi,
"看房":kanfang
}
最后按需遍历即可,放一部分结果如下图: