代码拉取完成,页面将自动刷新
#小组作业
#针对某一页内容进行爬虫
import requests,csv
from bs4 import BeautifulSoup
#<---定义网页,得到网页对应的需要抓取的标签信息--->
def content(page):
url='https://sh.lianjia.com/zufang/pg%s/'%page #由总控制程序控制
r=requests.get(url)
demo=r.text
soup=BeautifulSoup(demo,'lxml')
content=soup.find_all('div',class_='content__list--item--main')
return content
lst_totall=[] #整体写入时可以这样使用,但是编码过程中发现的问题无法得到快速解决
#下面需要考虑的问题是,不同页的内容如何截取?每一页写入文件,怎样保证数据不被覆盖?
#每页分别写入,需要用到函数
deep=int(input('选择你要获取租房信息的页面个数:'))
for i in range(1,deep+1):
page=i
content(page)
#<----开始截取每页信息--->
for i in content(page):
lst=[]
detail_twoline=i.find('p',class_='content__list--item--title twoline').get_text(strip=True)
lst.append(detail_twoline) #第1列,标题完成
#这里开始截取href地址
href=i.select('a')[0]['href']
#print(href)
lst.append(href) #第2列,网页地址完成
#print(lst)
#针对des这块,需要进行一些数据处理再添加进列表中,可以单独写成函数使用
detail_des=i.find('p',class_='content__list--item--des').get_text(strip=True)
revi=detail_des.split('/') #重新整理des信息
#print(revi)
revi_adr=revi[0].split('-') #以下是剥离出地址代码
#print(revi_adr)
revi_adr_s=revi_adr[:2]
#print(revi_adr_s)
revi_adr_1='-'.join(revi_adr_s)
#print(revi_adr_1)
lst.append(revi_adr_1) #第3列,地址完成
lst.extend(revi[1:4]) #第4/5/6列,面积、朝向、格局完成
#print(lst)
revi_floor=revi[4].split() #这里重新整理并且得到了要的楼层格式
#print(revi_floor)
lst.extend(revi_floor) #第7列,楼层完成
#print(lst)
detail_price=i.find('span',class_='content__list--item-price').get_text(strip=True)
#print(detail_price)
lst.append(detail_price) #第8列,价格完成
detail_oneline=i.find('p',class_='content__list--item--bottom oneline').get_text(strip=True)
lst.append(detail_oneline) #第9列,看房信息完成
#print(lst)
#<----到这里,csv文件,每一行的内容全部得到了---->
lst_totall.append(lst)
print(lst_totall)
#到这里,需要用csv进行读写看下效果如何
with open('lianjia.csv','w',newline='')as f:
f_csv=csv.writer(f)
f_csv.writerow(['标题','网址','区域','面积','朝向','房型','楼层1','楼层2','月租','看房信息'])
for item in lst_totall:
f_csv.writerow(item)
#<----到这里,每一页的内容已经写入到文件中--->
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。