...

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()

最新文章

  1. POJ 2752 - Seek the Name, Seek the Fame (KMP)
  2. 转自http://blog.sina.com.cn/daylive——C++ STL map
  3. 嵌入式平台组件白盒测试gcov、lcov和genhtml 使用指导
  4. Android 联网监控抓包工具的制作(tcpdump的使用)
  5. 关于js模拟c#的Delegate(委托)实现
  6. centOS7 mini配置linux服务器(四) 配置jdk
  7. Swift基础之Animation动画研究
  8. [SQL]LeetCode184. 部门工资最高的员工 | Department Highest Salary
  9. git教程:删除文件
  10. viewport定义,弹性布局,响应式布局及LESS和SASS框架应用
  11. java表达式中运算符优先级
  12. python中的基本数值计算
  13. Flink – CEP NFA
  14. php yii2 使用命令行模式开启脚本 报错 :Error while sending QUERY packet. PID=xxx
  15. 再谈编码 decode和encode
  16. go语言使用go-sciter创建桌面应用(六) Element元素操作和Event事件响应
  17. [转]nodejs深入学(7)理解Buffer
  18. C艹函数与结构体
  19. 28. centos 5.6添加用户时报copydir(): preserving permissions for /home/xxx/.mozilla: Operation not supported错
  20. Struts 2 - Architecture

热门文章

  1. MySQL优化之路
  2. ajax 中文参数乱码问题不一定是编码格式问题。
  3. Pytorch学习2020春-1-线性回归
  4. docsify + Gitee Pages服务搭建开源项目网站
  5. python和js分别在多行字符串中插入一行字符串
  6. Google Object detection配置与使用
  7. 《Spring源码深度解析》学习笔记——Spring的整体架构与容器的基本实现
  8. [技术博客]Django框架-后端的搭建
  9. kafka错误之 Topic xxx not present in metadata after 60000 ms
  10. Noip模拟36 2021.8.11