Advertisement

Python爬取链家二手房数据写入csv文件

阅读量:

1.我们常常找到一个网站不知道从何处下手,下面 我们分析一下

首先确定该网站的URL地址。有时你所需的数据可能隐藏在网页源代码之外,并需要进行抓包操作;同时也要注意可能出现的JavaScript加密处理,请逐步完成相关操作。

2.确定url,接下来就是发送请求,得到数据

3.就是解析数据(哪种解析方式方便就用哪种)

4.保存数据

2.接下来就是代码操作

导入要用的模块

复制代码
 #链家

    
 from lxml import etree
    
 import csv
    
 import requests
    
 from tqdm import tqdm  #(这个模块只是单纯想加,也可不加,显示进度条的)

开始发送请求

复制代码
 print('信息爬取中:\n')

    
 class HouseParse(object):
    
     #初始化
    
     def __init__(self):
    
     #请求头
    
     self.headers = {
    
         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36 Edg/96.0.1054.43'
    
     }
    
     #列表存放数据
    
     self.data_list = []
    
  
    
     def Sponsor(self):
    
     #翻页数据
    
     for i in tqdm(range(1,6)):
    
         url = f'https://cs.lianjia.com/ershoufang/rs{i}/'
    
         response = requests.get(url=url, headers=self.headers)
    
         #返回响应码
    
         # print(response.status_code)

3.开始解析数据

复制代码
         #返回响应码

    
         # print(response.status_code)
    
         html = etree.HTML(response.content.decode('utf-8'))
    
         #找到内容所在的li标签下
    
         elements = html.xpath('//div/ul[@class="sellListContent"]/li')
    
         # print(elements)
    
         for element in elements:
    
             #创建字典
    
             dict_ = {}
    
             #标题
    
             dict_['title'] = element.xpath('./div[1]/div[1]/a/text()')[0]
    
             #地址
    
             dict_['flood'] = ''.join([i.strip() for i in element.xpath('./div[1]/div[@class="flood"]//text()')])
    
             #简介
    
             dict_['introduction'] = element.xpath('./div[1]/div[@class="address"]/div/text()')[0]
    
             #价格
    
             dict_['price'] = ''.join([i.strip() for i in element.xpath('./div/div[@class="priceInfo"]/div//text()')])
    
             # print(dict_)
    
             self.data_list.append(dict_)

4.保存我们的数据

复制代码
             self.data_list.append(dict_)

    
  
    
     def save_data(self):
    
     #保存数据
    
     with open('lianjia.csv', 'w', encoding='utf-8', newline='')as f:
    
         writer = csv.DictWriter(f, fieldnames=['title', 'flood', 'introduction', 'price'])
    
         writer.writeheader()
    
         writer.writerows(self.data_list)
    
  
    
     def main(self):
    
     self.Sponsor()
    
     self.save_data()
    
  
    
 if __name__ == '__main__':
    
     house = HouseParse()
    
     house.main()
    
  
    
 print('\n爬取成功!')

爬取的内容

全部评论 (0)

还没有任何评论哟~