美文网首页
麻瓜编程·python实战·2-1作业:爬取晓租3页数据存进Mo

麻瓜编程·python实战·2-1作业:爬取晓租3页数据存进Mo

作者: bbjoe | 来源:发表于2016-08-12 12:18 被阅读0次

    我的结果

    MongoDB in Pycharm

    我的代码:

    from bs4 import BeautifulSoup
    import requests, pymongo
    
    urls = ['http://bj.xiaozhu.com/search-duanzufang-p{}-0/'.format(str(i)) for i in range(4)]
    
    client = pymongo.MongoClient('localhost', 27017)  # 连接客户端
    walden = client['walden']  # 给数据库命名
    xiaozu_3page = walden['xiaozu_3page']  # 给collection命名
    
    # 从聚合页面获取租房页面
    def get_pages(url):
        data = requests.get(url)
        soup = BeautifulSoup(data.text, 'lxml')
        pages = soup.select('.resule_img_a')
        for page in pages:
            page = page.get('href')
            duanzufang_info(page)
        return
    
    # 爬取租房页面信息
    def duanzufang_info(href):
        web_data = requests.get(href)
        soup = BeautifulSoup(web_data.text, 'lxml')
        title = soup.select('.pho_info em')[0].get_text() 
        addr = soup.select('.pho_info p')[0].get('title')  
        price = soup.select('.day_l span')[0].get_text()  
        area = soup.select('.border_none p')[0].get_text().split()[0]
        house_type = soup.select('.border_none p')[0].get_text().split()[1]
        for_people = soup.select('.h_ico2')[0].get_text()
        bed_num = '床' + soup.select('.h_ico3')[0].get_text() 
    
        data = {
            'title': title,
            'address': addr,
            'price': int(price),
            'area': area,
            'type': house_type,
            'people': for_people,
            'bed': '床'+bed_num
        }
        print(data)
        # 把data写进MongoDB
        xiaozu_3page.insert_one(data)
    
    # 选出价格在500以上的
    def find_fangzi():
        for info in xiaozu_3page.find():
            if info['price'] >= 500:
                print(info)
    
    # for url in urls:
    #     get_pages(url)
    
    find_fangzi()
    

    我的感想:

    • 花了将近一个小时完成。
    • 小猪的部分写起来还是很快的,既没有用headers、proxies,连time.sleep()都没有,粗暴。
    • MongoDB可视化界面看起来好友好啊
    • 一开始我自作多情把price写成 ¥+price,后来出错了呃,因为没有用int,结果不能用>=筛选,而到mongodb中修改数据类型,却又把price全部弄成了0(应该是¥符号出了问题吧)。

    相关文章

      网友评论

          本文标题:麻瓜编程·python实战·2-1作业:爬取晓租3页数据存进Mo

          本文链接:https://www.haomeiwen.com/subject/rnzssttx.html