python学习之旅-第二周week2-1

week2-1作业
学习python的第二周 5.23号完成练习week2-1在MongoDb中筛选房源信息

Paste_Image.png
Paste_Image.png

代码部分(爬取数据至mongodb)

from bs4 import BeautifulSoup
import requests
import time
import pymongo
client = pymongo.MongoClient('localhost',27017)
walden = client['walden']
sheet_message = walden['sheet_message']
def get_message(url):

    wb_data = requests.get(url)
    soup = BeautifulSoup(wb_data.text,'lxml')
    titles = soup.select('body > div.wrap.clearfix.con_bg > div.con_l > div.pho_info > h4 > em ')#标题
    address2 = soup.select('body > div.wrap.clearfix.con_bg > div.con_l > div.pho_info > p > span.pr5')#地址
    prices = soup.select('#pricePart > div.day_l > span ')#价格
    landlords = soup.select('#floatRightBox > div.js_box.clearfix > div.member_pic > a > img ')#房东图片
    house_images = soup.select('#detailImageBox > div.pho_show_r > div > ul > li:nth-of-type(2) > img ')#房屋图片第一张

    landNames = soup.select('#floatRightBox > div.js_box.clearfix > div.w_240 > h6 > a ')#房东名字
    sexes = soup.select('div.member_pic > div ')
    def print_gender(class_name):
        if class_name[0] == 'member_ico1':
            return '女'
        if class_name[0] == 'member_ico':
            return '男'
    for title,address,price,landLoad,landName,sex,house_image in zip(titles,address2,prices,landlords,landNames,sexes,house_images):
        data = {
            '标题':title.get_text(),
            '地址':address.get_text().strip(),
            '价格':price.get_text(),
            '房东图片':landLoad.get('src'),
            '房东姓名':landName.get_text(),
            '性别':print_gender(sex.get('class')),
            '房屋图片':house_image.get('data-src'),
        }
        print(data)
        sheet_message.insert_one(data)


#获取当前页面里的跳转地址
def get_pink_url(url):
    wb_data = requests.get(url)
    soup = BeautifulSoup(wb_data.text, 'lxml')
    links = soup.select('#page_list > ul > li > a ')
    for link in links:
        time.sleep(1)
        get_message(link.get('href'))
    return None
#获取分页连接
def get_pink_page():
    full_url = ['http://sh.xiaozhu.com/search-duanzufang-p{}-0/?startDate=2016-05-17&endDate=2016-05-18'.format(str(i)) for i in range(1,4,1)]
    for link in full_url:
        print(link)
        get_pink_url(link)
#调用方法,进行爬取
get_pink_page()

查询部分代码

def get_Db_Message():
    for message in sheet_message.find({'价格':{'$gt':'500'}}):
        print(message)
    return
get_Db_Message()

运行结果

Paste_Image.png
Paste_Image.png

总结:
-.通过本章节的运用学习初步掌握了mongodb的基础用法
-.学会在mongodb中进行简单的查询操作

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,966评论 25 709
  • 一进市政厅,就让人有一种不一样的感觉,庄严肃穆. 这…这是日光市??好吧不太记得了 这么多的绿色,刚下过雨泥土的味...
    想喝阿华田阅读 1,549评论 0 0
  • “爸爸,你每天晚上都来看我?” 两岁九个月的女儿 偎依在我怀里轻轻吟哦 圆圆的脸上绽放着幸福 眼睛里飘着欢乐的花朵...
    青灯先生阅读 2,669评论 5 5
  • 因为悟性太差,所以总是后知后觉,别人很早就明白的道理,自己总是过了很久才想明白!经常会过了很久恍然大悟“哦——原来...
    辉常明梁阅读 1,751评论 0 1

友情链接更多精彩内容