Python 爬取 房天下
2024-09-06 08:56:47
...
import requests
from requests import ConnectionError
from bs4 import BeautifulSoup
import pymongo #MongoDB的配置
MONGO_URL = 'localhost'
MONGO_DB = 'Fangtianxia'
MONGO_TABLE = 'HouseInfo'
#配置MongoDB
client = pymongo.MongoClient(MONGO_URL)
db = client[MONGO_DB] base_url = 'http://esf.sz.fang.com/housing/__1_0_0_0_'
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'
} #发送请求,获得响应
def get_html(url):
print('正在爬取',url)
try:
response = requests.get(url=url,headers=headers)
if response.status_code == 200:
return response.text
else:
print(response.status_code)
return None
except ConnectionError:
print('出现错误!')
return None #解析响应体,进行信息提取
def parser_html(html):
soup = BeautifulSoup(html,'lxml')
names = soup.select('.houseList .list .plotListwrap dd p')[::3]#小区名称、小区链接、
addresses = soup.select('.houseList .list .plotListwrap dd p')[1::3] # 小区地址
years = soup.select('.houseList .list .plotListwrap dd li')[::3]#修建时间
princes = soup.select('.houseList .list .listRiconwrap .priceAverage')#小区价格
ratioes = soup.select('.houseList .list .listRiconwrap .ratio')#小区涨幅
for i in range(len(names)):
house ={
'name' : names[i].a.text.strip(),
'url': names[i].find(name='a').attrs['href'].strip(),
'address':addresses[i].text.strip(),
'prince':princes[i].text.strip()[:-4],
'ratio': ratioes[i].text.strip()
}
save_to_mongo(house) def save_to_mongo(data):
try:
if db[MONGO_TABLE].insert(data):
print('成功保存到数据库',data)
except Exception:
print('保存失败!',data) #主体函数
def main():
for page in range(1,101):
url = base_url + str(page) +'_0_0_0/'#深圳的小区房价,不同页码下的url
html = get_html(url)#完成请求,获得响应体
parser_html(html)#解析响应体,提取感兴趣的信息 if __name__=='__main__':
main()
最新文章
- POJ 2752 - Seek the Name, Seek the Fame (KMP)
- 转自http://blog.sina.com.cn/daylive——C++ STL map
- 嵌入式平台组件白盒测试gcov、lcov和genhtml 使用指导
- Android 联网监控抓包工具的制作(tcpdump的使用)
- 关于js模拟c#的Delegate(委托)实现
- centOS7 mini配置linux服务器(四) 配置jdk
- Swift基础之Animation动画研究
- [SQL]LeetCode184. 部门工资最高的员工 | Department Highest Salary
- git教程:删除文件
- viewport定义,弹性布局,响应式布局及LESS和SASS框架应用
- java表达式中运算符优先级
- python中的基本数值计算
- Flink – CEP NFA
- php yii2 使用命令行模式开启脚本 报错 :Error while sending QUERY packet. PID=xxx
- 再谈编码 decode和encode
- go语言使用go-sciter创建桌面应用(六) Element元素操作和Event事件响应
- [转]nodejs深入学(7)理解Buffer
- C艹函数与结构体
- 28. centos 5.6添加用户时报copydir(): preserving permissions for /home/xxx/.mozilla: Operation not supported错
- Struts 2 - Architecture
热门文章
- MySQL优化之路
- ajax 中文参数乱码问题不一定是编码格式问题。
- Pytorch学习2020春-1-线性回归
- docsify + Gitee Pages服务搭建开源项目网站
- python和js分别在多行字符串中插入一行字符串
- Google Object detection配置与使用
- 《Spring源码深度解析》学习笔记——Spring的整体架构与容器的基本实现
- [技术博客]Django框架-后端的搭建
- kafka错误之 Topic xxx not present in metadata after 60000 ms
- Noip模拟36 2021.8.11