Python实战作业2-1:将信息写入到数据库并查询

任务:

获取三页小猎短租房租信息,并写入到数据库中
http://sh.xiaozhu.com/search-duanzufang-p{}-0/

成果:

Snip20170525_3.png

代码:


from bs4 import BeautifulSoup
import requests
import pymongo

client = pymongo.MongoClient('localhost',27017)
xiaozhu = client['xiaozhu']
house_info = xiaozhu['house_info']

def SexJudge(sex):
    if sex == 'member_ico':
        sex = 'man'
    else:
        sex = 'woman'
    return sex

def GetInfo(houseUrl):
    wb_data = requests.get(houseUrl)
    soup = BeautifulSoup(wb_data.text,'lxml')

    titles = soup.select('head > title')
    addresses = soup.select('span.pr5')
    rents =  soup.select('#pricePart > div.day_l > span')
    housePics = soup.select('#curBigImage')
    landlordPics = soup.select('#floatRightBox > div.js_box.clearfix > div.member_pic > a > img')
    sexes = soup.select('#floatRightBox > div.js_box.clearfix > div.member_pic > div')


    for title,address,rent,housePic,landlordPic,sex in zip(titles,addresses,rents,housePics,landlordPics,sexes):
        data = {
            'title':title.get_text(),
            'address':address.get_text().split()[0],
            'rent':int(rent.get_text()),
            'housePic':housePic.get('src'),
            'landlordPic':landlordPic.get('src'),
            'sex':SexJudge(''.join(sex.get('class'))),
        }
    print(data)
    return data

menuUrl = ['http://sh.xiaozhu.com/search-duanzufang-p{}-0/'.format(i) for i in range(1,4)]

def GetHouseUrl(menuUrl):
    data = []
    n = 0
    for url in menuUrl:
        wb_data = requests.get(url)
        soup = BeautifulSoup(wb_data.text,'lxml')

        houseUrls = soup.select('#page_list > ul > li > a')
        for houseUrl in houseUrls:
            data.insert(-1,houseUrl.get('href'))
        n = n+1
        print('Complete Page ',n)
    return data

n=0
for houseUrl in GetHouseUrl(menuUrl):
    house_info.insert_one(GetInfo(houseUrl)) #将详情写入数据库
    n = n+1
    print('Complete House ',n)


'''
(>) 大于 - $gt
(<) 小于 - $lt
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte
'''
for item in house_info.find({'rent':{'$gt':500}}):
    print(item)

参考资料:

MongoDB 教程:http://www.runoob.com/mongodb/mongodb-operators.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,735评论 6 427
  • mogon简介 MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可...
    猪哥亮阅读 6,086评论 0 10
  • 编译环境:python v3.5.0, mac osx 10.11.4 python爬虫基础知识: Python...
    掷骰子的求阅读 16,824评论 11 101
  • 今晚和朋友分开后,思考到底去哪里吃饭呢,想走回去家附近吃快餐得了,可是转念又觉得应该试试别的,想起附近有一家陕西名...
    枫叶姑凉阅读 1,688评论 0 0
  • 栀子香气的少年 曾有我薄弱的希翼 风筝、大雁、蜻蜓 在布满乌云的天空下遨游 白杨树和枞树林彼此沉默 流浪歌手唱着思...
    f3494c632b49阅读 3,532评论 18 23

友情链接更多精彩内容