本次要爬取的目标网站是贝壳二手房 网址如下:
https://nt.ke.com/xiaoqu/
import requests
from bs4 import BeautifulSoup
import time
import xlwt
#网址如下
#https://nt.ke.com/xiaoqu/
def main(): #主函数
for i in range(1,101):
url=f"https://nt.ke.com/xiaoqu/pg{i}/"
fun(url,i)
#break
#fun1(html)
#break
#print(html)
#fun1(html)
def fun(url,i): #数据获取
resp=requests.get(url).text #请求数据,得数据
print(i) #表示得到网页的数量
i+=1
#print(resp)
time.sleep(1)
fun1(resp)
lis1=[] #存储价格
lis2=[] #存储整体数据
def fun1(html): #数据进行解析,根据Beautifulsoup进行解析
print('aa')
html1=BeautifulSoup(html,'html.parser') #" parser "表示html解析器
shuju=html1.find("ul" ,class_="listContent" ).find_all("li",class_="clear xiaoquListItem CLICKDATA" )
monei=html1.find("ul" ,class_="listContent" ).find_all("div" ,class_="xiaoquListItemPrice")
for i in shuju:
i1=i.find_all('a')
lis=[] #存储其他数据
for j in i1:
#print(j)
#print(j.text)
lis.append(j.text) #表示解析数据
lis2.append(lis[1:]) #简单清洗数据
for j in monei:
lis1.append(j.find("div" ,class_="totalPrice").text)
#print(lis1)
#print(len(lis1))
#fun2(lis1,lis2)
def fun2(lis1,lis2): #数据处理
a=0
for i in lis2:
i.append(lis1[a])
#print('bb')
a+=1
lis3=[]
for i in lis2:
if len(i)==7:
lis3.append(i) #清洗数据,剔除无效数据
fun3(lis3)
'''for i in lis2:
print(i)'''
def fun3(lis3): #保存数据
print("开始存储!")
book = xlwt.Workbook(encoding="utf-8", style_compression=0) # 创建"workbook"对象
sheet = book.add_sheet("房价数据", cell_overwrite_ok=True) # 创建工作表
col = ["小区名称", "90天成交额", "所剩房子数量", "所在经济区","所在商务区","该小区所以房子数量","价格"]
for i in range(0, len(col)):
sheet.write(0, i, col[i]) # 列名
for i in range(1, len(lis3)):
print('已经存储', i - 1, '行数据')
for j in range(0, len(lis3[i])):
sheet.write(i, j, lis3[i - 1][j])
book.save("房价数据4.xls")
if __name__ == '__main__':
main()
fun2(lis1,lis2)
最终得到数据如下: