1 Star 0 Fork 1

Z先生/python_practise

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
从页面能得到什么.py 3.00 KB
一键复制 编辑 原始数据 按行查看 历史
Z先生 提交于 2020-04-27 13:13 +08:00 . 还可以再优化,添加更多函数
#小组作业
#针对某一页内容进行爬虫
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)
#<----到这里,每一页的内容已经写入到文件中--->
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/Mr_Z11/python_practise.git
git@gitee.com:Mr_Z11/python_practise.git
Mr_Z11
python_practise
python_practise
master

搜索帮助