Python实战课程1-3练习:爬取租房信息

2016-11-24  本文已影响150人  mugichya

前面写了自己的本地网页并爬取,然后就真枪实战地爬取真实网站了。这节的练习项目是爬取房源的详细信息(北京短租房)。分两步,先爬取单个页面信息,然后多个页面。难点有两个:

1. 房东性别的判断。用copy outHTML复制出来发现男,女的标签的差别在于class样式,这样就可以用if else条件语句判断了。

2. 抓取多个页面,需要找到每个页面链接的规律然后用for循环遍历传入函数中再分别爬取,最后将爬取的数据放入字典方便查找。

要爬取的房源信息

代码如下:

# -*- coding: utf-8 -*-

frombs4importBeautifulSoup

importrequests

# 获取链接

defget_links(url):

wb_data = requests.get(url)

# 开始解析网页数据

soup = BeautifulSoup(wb_data.text,'lxml')

# 图片信息获取,找到链接的css selector. 北京

links = soup.select("#page_list > ul > li > a")

# 由于链接有多个,soup.select返回的是列表,需要用get获取

#  print(links)

forlinkinlinks:

# 由于链接地址在标签的href属性里面,所以要用get获取

href = link.get("href")

# 把得到的详情链接传给函数,这个函数可以得到详细数据

get_detail_info(href)

# 获取页面详细信息

defget_detail_info(href):

wb_data = requests.get(href)

soup = BeautifulSoup(wb_data.text,'lxml')

# 获取标题

titles = soup.select("body > div.wrap.clearfix.con_bg > div.con_l > div.pho_info > h4 > em")

# 获取地址

address = soup.select("body > div.wrap.clearfix.con_bg > div.con_l > div.pho_info > p > span")

# 获取价格

prices = soup.select("#pricePart > div.day_l > span")

# 获取图片

images = soup.select("#imgMouseCusor")

# 获取房东头像

sculptures = soup.select("#floatRightBox > div.js_box.clearfix > div.member_pic > a > img")

# 获取房东姓名

names = soup.select("#floatRightBox > div.js_box.clearfix > div.w_240 > h6 > a")

# 获取房东性别

sexes = soup.select("#floatRightBox > div.js_box.clearfix > div.member_pic > div")

fortitle,address,price,image,sculpture,name,sexinzip(titles,address,prices,images,sculptures,names,sexes):

data = {

"title": title.get_text(),

"address": address.get_text(),

"price": price.get_text(),

"image": image.get("src"),

"sculpture": sculpture.get("src"),

"name": name.get_text(),

"sex": get_lorder_sex(sex.get("class"))

}

print(data)

# 注意到性别如果用copy selector复制,男女是一样的,用copy outerHTML复制出来发现差别在于class标签,因此可以做选择

# 性别女:

(outerHTML)

# 性别男:

(outerHTML)

defget_lorder_sex(class_name):

ifclass_name == ['member_ico']:

return'男'

else:

return'女'

# 生成10个列表页面地址

urls = ["http://bj.xiaozhu.com/search-duanzufang-p{}-0/".format(number)fornumberinrange(1,10)]

# 从链接列表中,用for一个个取出来

forsingle_urlinurls:

# 把得到的列表页面链接传给函数,这个函数就可以得到详情页链接

get_links(single_url)


爬取到的信息如下(最后保存的时候提示文章篇幅过长,因此只贴上部分爬取信息=_=):

{'price': '380', 'address': '北京市西城区里仁街2号院\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/8,0,27,2745,363,363,ae95d0a0.jpg', 'title': '北京南站地铁4号线陶然亭站的私家花园大床房', 'name': '花田小院', 'sex': '男'}

{'price': '188', 'address': '北京市西城区新德街小区35号院\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/7,0,41,9114,376,375,100e407c.jpg', 'title': '【特价】后海北师大火箭军医院地铁带阳台主卧', 'name': '薇薇安521', 'sex': '女'}

{'price': '195', 'address': '北京市东城区西花市南里新景家园\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/8,0,67,3380,300,300,98781261.jpg', 'title': '市中心近地铁天安门前门天坛协和致青春主题房', 'name': '致我们逝去的青春', 'sex': '男'}

{'price': '398', 'address': '北京市东城区鼓楼大街安德路55号院\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/8,0,61,1483,375,376,8c9f4abd.jpg', 'title': '【两居特价】二环鼓楼大街后海鸟巢温馨两居', 'name': '天天Tinny', 'sex': '女'}

{'price': '198', 'address': '北京市西城区广安门外大街荣丰2008小区\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/8,0,67,1581,260,260,adc1806b.jpg', 'title': '《W&M》 の  阳光花园  西站复兴门商圈', 'name': 'Mark_Wang', 'sex': '男'}

{'price': '450', 'address': '北京市朝阳区时代国际嘉园\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/8,0,68,627,329,329,150f5068.jpg', 'title': '国贸CBD【摩登club】红酒、飘窗、榻榻米', 'name': '猪小春', 'sex': '女'}

{'price': '298', 'address': '北京市丰台区镇国寺北街4号院冬季星空1号楼\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/6,0,77,6660,329,329,9f66cc54.jpg', 'title': '五月的家炊烟店 南站附近交通便利 生活氛围好', 'name': '紫石', 'sex': '女'}

{'price': '378', 'address': '北京市西城区教场口街9号院\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/8,0,95,2273,330,329,0eb20f77.jpg', 'title': '德胜门 后海 积水潭医院 北师大精品2居', 'name': '漫步云中', 'sex': '女'}

{'price': '256', 'address': '北京市东城区东皇城根北街40号院\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/8,0,66,4126,329,329,fdcdce9a.jpg', 'title': '女木艺师的家-故宫旁阳光大卧室,全实木家具', 'name': '楚姑娘_Dita', 'sex': '女'}

{'price': '388', 'address': '北京市西城区南新华街18号安平里\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/8,0,85,2444,281,281,7923cfb2.jpg', 'title': '紧邻天安门故宫、和平门地铁2、7号线通透两居', 'name': '大美的家', 'sex': '女'}

{'price': '328', 'address': '北京市东城区雍和宫大街\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/8,0,86,290,260,260,c62f2d55.jpg', 'title': '雍和宫簋街南锣鼓巷独立卫生间温馨的家', 'name': '仙人球lsy', 'sex': '女'}

{'price': '398', 'address': '北京市海淀区六道口八家嘉园\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/3,0,13,2417,329,329,957e12fb.jpg', 'title': '五道口、清华、林大 典雅带飘窗大两居整租', 'name': '四海为一家', 'sex': '女'}

{'price': '308', 'address': '北京市朝阳区甘露园中里青年汇佳园8号楼\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/8,0,78,1619,329,329,0b2eb4db.jpg', 'title': '青年路6号线大悦城阳光充沛温馨舒适的大床房', 'name': '幻想公主', 'sex': '女'}

{'price': '550', 'address': '北京市朝阳区广渠路36号首城国际\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/4,0,97,7907,320,320,708221d7.jpg', 'title': '【限时特价】双井10号7号14号地铁三室整租', 'name': '小妍的家', 'sex': '女'}

{'price': '358', 'address': '北京市丰台区万科红公寓\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/6,0,40,6670,260,260,377c1f3c.jpg', 'title': '国贸CBD商圈天坛北京南站5,10号线地铁\n', 'name': 'simoe陈', 'sex': '男'}

{'price': '138', 'address': '北京市大兴区清源西路\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/3,0,15,339,375,375,742e0af4.jpg', 'title': '地铁四号线清源路站 (艺术气息温馨大主卧)', 'name': '给您一个温暖的家', 'sex': '男'}

{'price': '288', 'address': '北京市朝阳区松榆西里\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/7,0,85,14196,369,369,4951119d.jpg', 'title': '【特价】近国贸/生活、交通超便利地中海大一居', 'name': '厉害了_Word妈', 'sex': '女'}

{'price': '398', 'address': '北京市海淀区学院路逸城东苑15号楼(林业大学北 ...\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/3,0,13,2417,329,329,957e12fb.jpg', 'title': '【两居特价】新东方 五道口 林大农大两居整租', 'name': '四海为一家', 'sex': '女'}

{'price': '368', 'address': '北京市东城区广渠门北里55号\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/4,0,30,8173,260,260,21e70d52.jpg', 'title': '故宫天安门北京站天坛国贸两广路二环里临铁7号', 'name': '美丽的北京你的家', 'sex': '女'}

{'price': '399', 'address': '北京市朝阳区太阳宫半岛国际公寓12号楼\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/7,0,84,10831,329,329,1867ecd6.jpg', 'title': '10号线地铁太阳宫高端公寓进口床垫轻奢大三房', 'name': '快快乐乐的苹果', 'sex': '女'}

{'price': '196', 'address': '北京市东城区鼓楼\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/7,0,97,11132,329,330,90a55b36.jpg', 'title': '【清新】鼓楼后海+胡同独立小院老北京民宿', 'name': '心旅民宿', 'sex': '女'}

{'price': '238', 'address': '北京市西城区德胜门大街265号\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/5,0,21,2825,363,364,dffb9e72.jpg', 'title': '特价德内复式,步行后海南锣,护国寺小吃街东头', 'name': '隋青洋', 'sex': '女'}

{'price': '328', 'address': '北京市朝阳区安慧里二区\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/4,0,7,8442,260,260,6d8f4115.jpg', 'title': '鸟巢之畔5号线惠新西街北口中国风古典特色两居', 'name': '我_在回忆里等你', 'sex': '女'}

{'price': '398', 'address': '北京市海淀区西四环中路41号院\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/8,0,91,453,378,378,34b2042e.jpg', 'title': '一号线五棵松地铁北欧风两居室', 'name': 'Cathy77dudu', 'sex': '女'}

{'price': '89', 'address': '北京市朝阳区光华路2号阳光100国际公寓B座\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/7,0,12,14490,332,332,c8d2d49c.jpg', 'title': '创业者之家:国贸CBD豪宅客厅地图间高低床', 'name': '探索者之家', 'sex': '女'}

{'price': '358', 'address': '北京市东城区西花市南里/新景家园东区\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/1,0,89,781,260,260,1cdb8bfc.jpg', 'title': '近磁器口崇文门、协和、同仁北京医院温馨一居', 'name': '笨鱼', 'sex': '男'}

{'price': '498', 'address': '北京市东城区东四十二条\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/7,0,33,11210,201,202,55268682.jpg', 'title': '霁遇-东四小筑', 'name': '霁遇', 'sex': '男'}

{'price': '195', 'address': '北京市东城区西花市南里新景家园\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/7,0,4,11401,410,410,4ac60648.jpg', 'title': '天安门前门协和医院257号线电影主题房', 'name': 'Joeyin', 'sex': '男'}

{'price': '769', 'address': '北京市丰台区科怡路\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/2,0,50,1103,260,260,af7b8829.jpg', 'title': '简约大气,浪漫舒适,紧邻9号线科怡路', 'name': '三毛的家', 'sex': '女'}

{'price': '178', 'address': '北京市朝阳区朝阳北路公园1872\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/8,0,88,4662,183,183,9d80a8a8.jpg', 'title': '公园1872的独立房间 近 朝阳公园', 'name': 'juliuszhou', 'sex': '男'}

{'price': '500', 'address': '北京市东城区东二环广渠门北里55号\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/4,0,30,8173,260,260,21e70d52.jpg', 'title': '两居72平市中心天安门北京站天坛国贸临铁7号', 'name': '美丽的北京你的家', 'sex': '女'}

{'price': '138', 'address': '北京市朝阳区青年路\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/8,0,29,1773,329,329,ce425af1.jpg', 'title': '朝阳大悦城地铁六号线', 'name': '绾儿', 'sex': '女'}

{'price': '228', 'address': '北京市朝阳区亚运村大屯路220号浩运园\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/6,0,22,1762,375,375,68d2c1ef.jpg', 'title': '水立方鸟巢五、十五号线大屯路东站走心民宿', 'name': 'Ollylee', 'sex': '男'}

{'price': '260', 'address': '北京市石景山区八角北里31号楼\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/8,0,15,2710,320,320,6372cd2d.jpg', 'title': '紧邻长安街地铁1号线八角游乐园温馨大2居', 'name': '张日京', 'sex': '女'}

{'price': '348', 'address': '北京市朝阳区双井非常生活小区\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/7,0,9,11515,363,363,9fc4ca96.jpg', 'title': '国贸双井10号线地铁超大一居整租', 'name': '波罗蜜', 'sex': '女'}

{'price': '299', 'address': '北京市海淀区学院路城华园2号楼(圣熙八号向北2...\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/7,0,45,12221,281,281,b1b29562.jpg', 'title': '可住多人清华林业语言农大鸟巢五/六道口整租', 'name': '丹妮的家', 'sex': '女'}

{'price': '298', 'address': '北京市丰台区蒲黄榆GOGO新世代小区2号楼\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/2,0,12,3663,376,376,949053ce.jpg', 'title': '蒲黄榆地铁上 整租 近长安街天坛 洁净小家', 'name': '少冰', 'sex': '男'}

{'price': '398', 'address': '北京市朝阳区甘露园中里青年汇佳园\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/6,0,64,5499,375,376,02f2abe6.jpg', 'title': '青年路朝阳大悦城6号线地铁温馨一居', 'name': '眼花花', 'sex': '女'}

{'price': '680', 'address': '北京市石景山区模式口北里\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/7,0,14,10244,160,160,ef08d62f.jpg', 'title': '石景山近苹果园地铁复式豪华大3居可住9人', 'name': '秦明月', 'sex': '女'}

{'price': '380', 'address': '北京市海淀区清河前屯路永泰庄地铁600米(公交车...\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/1,0,80,3931,261,261,05ced93e.jpg', 'title': '紧邻地铁8号线 鸟巢-北大清华 舒适民居', 'name': '慵懒的喵喵酱', 'sex': '女'}

{'price': '139', 'address': '北京市西城区红居南街\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/8,0,41,2474,329,329,9dc0ebb8.jpg', 'title': '二环边近官营地铁温馨文艺单间,毗邻西站金融街', 'name': '有朋远来不亦悦乎', 'sex': '男'}

{'price': '358', 'address': '北京市东城区东四南大街礼士胡同43号\n                                  ', 'image': None, 'sculpture': 'http://image.xiaozhustatic1.com/21/1,0,63,24,375,375,5e93b720.jpg', 'title': '老北京四合院刘墉故居 双层LOFT', 'name': 'xiaopipi888', 'sex': '女'}

Process finished with exit code 0

上一篇下一篇

猜你喜欢

热点阅读