# -*- coding:utf-8 -*-
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 获取网页源码
def get_html(url):
try:
res=requests.get(url,timeout=30) # 发送url请求,并将请求到的结果赋值给res
res.encoding='gb2312' # 同一改成 GB2312 编码
return res.text
except:
return ''
def parse_html(html):
# 将爬取到的网页传给beautifulsoup,用html引擎解析器解析
soup=BeautifulSoup(html,'html.parser')
# 查找所有tr标签里属性的键是bgcolor值是#FFFFFF的标签,以列表的形式赋值给变量
tr_list=soup.find_all('tr',attrs={'bgcolor':'#FFFFFF'})
# 保存所有房屋信息
houses=[]
for tr in tr_list:
house={}
# 详细地址
house['详细地址']=tr.find_all('a',attrs={'target':'_blank'})[0].string
# 详情链接
house['详情链接']='http://www.lgfdcw.com/cs/'+tr.find_all('a',attrs={'target':'_blank'})[0].attrs['href']
# 房型
house['房型']=tr.find_all('td')[2].string
# 户型
house['户型']=tr.find_all('td')[3].string
# 面积
house['面积']=tr.find_all('td')[4].string[:-2]+'平方米'
# 出售价格
house['出售价格']=tr.find_all('td')[5].string.strip()
# 登记时间
house['登记时间']=tr.find_all('td')[6].string
houses.append(house)
return houses
def save_file(dic):
# columns设置索引列,如果不设置,会从0开始
df=pd.DataFrame(dic,columns=['详细地址','详情链接','房型','户型','面积','出售价格','登记时间'])
df.to_excel(r'D:\schpythonfiles\houses.xlsx') # 将爬取到的数据用excel保存
def main():
# 抓取网页数据
html =get_html('http://www.lgfdcw.com/cs/')
# 解析网页内容
res=parse_html(html)
# 保存到本地
save_file(res)
main()