爬取内容:获取房源信息,包括朝向,户型,面积,价格等,并把内容保存在excel中。
效果图:
准备工作:需要准备三个python库,分别为如下:
(1)requests库:主要是为了获取网页中数据信息
(2)BeautifulSoup库:主要是将获取到的信息转换为xml文件
(3)lxmt:主要将生成的list数据存入到excel表格中
第一部分:
获取房源信息:
def GetHouseInfoList(url): house = [] headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER'} # 从网页获取信息 res = requests.get(url, headers=headers) # 解析内容 soup = BeautifulSoup(res.content, 'html.parser') # 房源title housename_divs = soup.find_all('div', class_='title') for housename_div in housename_divs: housename_as = housename_div.find_all('a') for housename_a in housename_as: # 标题 houseName = [] houseName.append(housename_a.get_text()) houseName.append(housename_a.get('href')) house.append(houseName) huseinfo_divs = soup.find_all('div', class_='houseInfo') for i in range(len(huseinfo_divs)): info = huseinfo_divs[i].get_text() infos = info.split('|') house[i].append(infos[0]) house[i].append(infos[1]) house[i].append(infos[2]) house_prices = soup.find_all('div', class_='totalPrice') for i in range(len(house_prices)): # 价格 price = house_prices[i].get_text() house[i].append(price) return house
requests.get(url, headers=headers):从网页中获取数据
soup = BeautifulSoup(res.content, 'html.parser'):将网页的内容转化成html数据格式,方便后面数据的解析
soup.find_all('div', class_='title'):主要是去获取标签为div,属性为class,属性值为title的xml数据,这部分不懂的同学可以看看xml语法,比较简单
第二部分:
将生成的house信息存入到excel表格中:
def WriteToExcel(path,house): workBook = xlwt.Workbook() sheet = workBook.add_sheet('houseInfo') row0 = ['标题','链接','户型','面积', '朝向','总价'] for i in range(len(row0)): sheet.write(0,i,row0[i]) for i in range(len(house)): houseInfo = house[i] for j in range(len(houseInfo)): sheet.write(i+1,j,houseInfo[j]) workBook.save(path)
xlwt.Workbook():创建一个工作簿
workBook.add_sheet('houseInfo'):在工作簿里面创建一个sheet
sheet.write(i+1,j,houseInfo[j]):将houseInfo[j]数据写入到sheet的第i+1行第j列
第三部分:
主函数入口:
if __name__ == '__main__': url = 'https://sjz.lianjia.com/ershoufang/hy1f2f5sf1l3l2l4a2a3a4/' house = GetHouseInfoList(url) WriteToExcel('D:/HouseInfo.xls',house) for houseInfo in house: print(houseInfo)
这个是整个爬取数据的过程,重点要学会以下几点:
(1)python如何获取网页数据并转化为html
(2)python中的函数如何读取到xml对应标签和属性的数据
(3)python中如何将数据写入到excel表格中
有疑问的可以私信我,一起交流答疑解惑