|
8鱼币
本帖最后由 admintest166 于 2022-8-13 12:18 编辑
在爬取完 安居客的数据以后 想保存为excel 方便做数据分析
但是我每爬取一页数据写入excel时 都会覆盖掉前一页的数据 想问下各位大佬有什么方法 可以不覆盖原有数据 新数据追加在后面的方法呢
- import requests
- from pyquery import PyQuery as pq
- import re
- import pandas as pd
- import time
- b=[]
- headers={
- 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.81 Safari/537.36 Edg/104.0.1293.47'
- }
- for i in range(1,3):
- print(i)
- url='https://gl.zu.anjuke.com/fangyuan/p{}/'.format(i)
- request=requests.get(url,headers=headers).text
- doc=pq(request)
- #房品名称
- Real_estate=[]
- #a=doc('a .strongbox').eq(2).text()
- #提取房品名称
- a=doc('.zu-info a b').items()
- for i in a:
- Real_estate.append(i.text())
- print(len(Real_estate))
- #提取面积及楼层
- b=doc('.details-item.tag').text().split(' ')
- data = [x for i,x in enumerate(b) if x.find('\ue147') != -1]
- #删除元素
- for i in data:
- b.remove(i)
- print(b)
- #提取租房小区名称
- c=doc('.details-item a').text().split(' ')
- #提取租房区域
- d=doc('.zu-info address').text()
- dd=re.findall(r'[\u4e00-\u9fa5]{2}-',d)
- #提取租金
- f=doc('.zu-side p b').text().split()
- time.sleep(5)
- pf1=pd.DataFrame()
- pf1['房品名称']=Real_estate
- pf2=pd.DataFrame()
- pf2['面积及楼层']=b
- pf3=pd.DataFrame()
- pf3['小区名称']=c
- pf4=pd.DataFrame()
- pf4['房子区域']=dd
- pf5=pd.DataFrame()
- pf5['租金']=f
- pf=pd.concat([pf1,pf2,pf3,pf4,pf5],axis=1)
- pf.to_excel('E:\\pytest\\租房数据.xlsx',index=False)
- print('保存完毕')
复制代码
下面是写入数据的情况 爬取了3页的数据 每页大概是60条数据 按道理来说应该有120以上的数据 但是只有60条 而且还覆盖了前一页的数据
- import requests
- from pyquery import PyQuery as pq
- import re
- import pandas as pd
- import time
- b=[]
- mydata = [[].copy() for _ in range(5)]
- headers={
- 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.81 Safari/537.36 Edg/104.0.1293.47'
- }
- for i in range(1,3):
- print(i)
- url='https://gl.zu.anjuke.com/fangyuan/p{}/'.format(i)
- request=requests.get(url,headers=headers).text
- doc=pq(request)
- #房品名称
- Real_estate=[]
- #a=doc('a .strongbox').eq(2).text()
- #提取房品名称
- a=doc('.zu-info a b').items()
- for i in a:
- Real_estate.append(i.text())
- print(len(Real_estate))
- #提取面积及楼层
- b=doc('.details-item.tag').text().split(' ')
- data = [x for i,x in enumerate(b) if x.find('\ue147') != -1]
- #删除元素
- for i in data:
- b.remove(i)
- print(b)
- #提取租房小区名称
- c=doc('.details-item a').text().split(' ')
- #提取租房区域
- d=doc('.zu-info address').text()
- dd=re.findall(r'[\u4e00-\u9fa5]{2}-',d)
- #提取租金
- f=doc('.zu-side p b').text().split()
- time.sleep(5)
- # pf1=pd.DataFrame()
- # pf1['房品名称']=Real_estate
- #
- # pf2=pd.DataFrame()
- # pf2['面积及楼层']=b
- #
- # pf3=pd.DataFrame()
- # pf3['小区名称']=c
- #
- # pf4=pd.DataFrame()
- # pf4['房子区域']=dd
- #
- # pf5=pd.DataFrame()
- # pf5['租金']=f
- mydata[0].extend(Real_estate)
- mydata[1].extend(b)
- mydata[2].extend(c)
- mydata[3].extend(dd)
- mydata[4].extend(f)
- mydata_a = {
- '房品名称':mydata[0],
- '面积及楼层':mydata[1],
- '小区名称':mydata[2],
- '房子区域':mydata[3],
- '租金':mydata[4],
- }
- pf=pd.DataFrame(mydata_a)
- pf.to_excel('E:\\pytest\\租房数据.xlsx',index=False)
- print('保存完毕')
复制代码
|
-
|