网络爬虫:爬取某地区短租房信息

1、爬虫思路分析
(1)原来的北京短租房的地址规则如下:
http://bj.xiaozhu.com/
http://bj.xiaozhu.com/search-duanzufang-p2-0/
http://bj.xiaozhu.com/search-duanzufang-p3-0/
http://bj.xiaozhu.com/search-duanzufang-p4-0/

(2)需要爬取的信息有:标题、地址、价格、房东名称、房东性别和房东头像的链接

"""
# 案例要求:
# 将利用到 Requests和BeautifulSoup库,爬取小猪短租网gz地区租房的信息

#导入相应的库文件
from bs4 import BeautifulSoup as bs
import requests as rs
import time as t 

# 加入请求头,伪装成浏览器模式
headers={
   'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134'
   }

#定义判断用户性别的函数
def judgment_sex(class_name):
    #if class_name==['member_ico1']:
    if class_name==["member_girl_ico"]:
        return '女'
    else:
        return '男'
    
#定义获取详细页URL的函数
def get_links(url):
    wb_data=rs.get(url,headers=headers)
    soup=bs(wb_data.text,'lxml')
    links=soup.select('#page_list > ul > li > a') #links为URL列表
    for link in links:
        href=link.get("href")
        print(href)
        get_info(href)  #循环出的URL,依次调用get_info()函数
        
#定义获取网页信息的函数
def get_info(url):
    wb_data=rs.get(url,headers=headers)
    soup=bs(wb_data.text,'lxml')
    #titles=soup.select('span.pr5') #获取title
    titles=soup.select('div.wrap.clearfix.con_bg > div.con_l > div.pho_info > h4 > em')
    #addresses=soup.select('div.pho_info > h4') #获取地址
    addresses=soup.select('div.con_l > div.pho_info > p > span')
    prices=soup.select('#pricePart > div.day_l > span')#获取价格
    imgs=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')
    #sexs=soup.select('div.js_box.clearfix > div.member_pic > div')
    sexs=soup.select('#floatRightBox > div.js_box.clearfix > div.w_240 > h6 > span')
    for title,address,price,img,name,sex in zip(titles,addresses,prices,imgs,names,sexs):
        data={
            'title':title.get_text().strip(),
            'address':address.get_text().strip(),
            'price':price.get_text(),
            'img':img.get("src"),
            'name':name.get_text(),
            'sex':judgment_sex(sex.get("class"))
                }
        print(data)  #获取信息并通过字典打印出来

#为程序的主入口’
if __name__=='__main__':
   urls=['http://gz.xiaozhu.com/search-duanzufang-p{}-0/'.format(number) for number in range(1,14)]
   for singe_url in urls:
        get_links(singe_url)
        t.sleep(2) #睡眠2秒

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊明之道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值