贝壳二手房爬虫,搞搞房价

本次要爬取的目标网站是贝壳二手房 网址如下:
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)

最终得到数据如下:
贝壳二手房爬虫,搞搞房价

上一篇:JAVA---小孩报数-用集合类解决


下一篇:vue一个关于v-model的面试题