Python爬虫入门 | 5 爬取小猪短租租房信息

640?wx_fmt=gif

点击上方蓝色字体,关注我们

15

小猪短租是一个租房网站,上面有很多优质的民宿出租信息,下面我们以成都地区的租房信息为例,来尝试爬取这些数据。

小猪短租(成都)页面:http://cd.xiaozhu.com/

Python爬虫入门 | 5 爬取小猪短租租房信息_第1张图片


1.爬取租房标题

按照惯例,先来爬下标题试试水,找到标题,复制xpath。

Python爬虫入门 | 5 爬取小猪短租租房信息_第2张图片

多复制几个房屋的标题 xpath 进行对比:

//*[@id="page_list"]/ul/li[1]/div[2]/div/a/span
//*[@id="page_list"]/ul/li[2]/div[2]/div/a/span
//*[@id="page_list"]/ul/li[3]/div[2]/div/a/span

瞬间发现标题的 xpath 只在

  • 后序号变化,于是,秒写出爬取整页标题的 xpath:

    //*[@id=“page_list”]/ul/li/div[2]/div/a/span

    还是固定的套路,让我们尝试把整页的标题爬下来:

    Python爬虫入门 | 5 爬取小猪短租租房信息_第3张图片

    小猪在IP限制方面比较严格,代码中务必要加入 sleep() 函数控制爬取的频率

    好了,再来对比下 xpath 信息:

    Python爬虫入门 | 5 爬取小猪短租租房信息_第4张图片

    顺着标题的标签网上找,找到整个房屋信息标签, xpath 对比如下:

    //*[@id=“page_list”]/ul/li   #整体
    //*[@id=“page_list”]/ul/li/div[2]/div/a/span   #标题

    你应该知道该怎么来改代码了吧,写一个循环:

    file=s.xpath(‘//*[@id=“page_list”]/ul/li’)
    for div in file:    
      title=div.xpath("./div[2]/div/a/span/text()")[0]

    好了,来运行一下试试:

    Python爬虫入门 | 5 爬取小猪短租租房信息_第5张图片


    2.爬取多个元素的信息

    对比其他元素的 xpath:

    //*[@id=“page_list”]/ul/li   #整体
    //*[@id=“page_list”]/ul/li/div[2]/div/a/span   #标题
    //*[@id=“page_list”]/ul/li/div[2]/span[1]/i   #价格
    //*[@id=“page_list”]/ul/li/div[2]/div/em   #描述
    //*[@id=“page_list”]/ul/li/a/img   #图片

    然后可以写出代码:

    file=s.xpath(“//*[@id=“page_list”]/ul/li”)
    for div in file:    
      title=div.xpath(“./div[2]/div/a/span/text()”)[0]          
      price=div.xpath(“./div[2]/span[1]/i/text()”)[0]    
      scrible=div.xpath(“./div[2]/div/em/text()”)[0].strip()    
      pic=div.xpath(“./a/img/@lazy_src”)[0]

    来尝试运行一下:

    Python爬虫入门 | 5 爬取小猪短租租房信息_第6张图片


    3.翻页,爬取更多页面

    看一下翻页时候 url 的变化:

    http://cd.xiaozhu.com/search-duanzufang-p1-0/    #第一页
    http://cd.xiaozhu.com/search-duanzufang-p2-0/    #第二页
    http://cd.xiaozhu.com/search-duanzufang-p3-0/    #第三页
    http://cd.xiaozhu.com/search-duanzufang-p4-0/    #第四页
    ……………………

    url 变化的规律很简单,只是 p 后面的数字不一样而已,而且跟页码的序号是一模一样的,这就很好办了……写一个简单的循环来遍历所有的url。

    for a in range(1,6):
      url = ‘http://cd.xiaozhu.com/search-duanzufang-p{}-0/’.format(a)
      # 我们这里尝试5个页面,你可以根据自己的需求来写爬取的页面数量

    完整的代码如下:

    from lxml import etree
    import requests
    import time
    
    for a in range(1,6):
        url = 'http://cd.xiaozhu.com/search-duanzufang-p{}-0/'.format(a)
        data = requests.get(url).text
    
        s=etree.HTML(data)
        file=s.xpath('//*[@id="page_list"]/ul/li')
        time.sleep(3)
        
        for div in file:
            title=div.xpath("./div[2]/div/a/span/text()")[0]
            price=div.xpath("./div[2]/span[1]/i/text()")[0]
            scrible=div.xpath("./div[2]/div/em/text()")[0].strip()
            pic=div.xpath("./a/img/@lazy_src")[0]
                
            print("{}   {}   {}   {}\n".format(title,price,scrible,pic))

    看一下爬了5个页面下来的效果:

    Python爬虫入门 | 5 爬取小猪短租租房信息_第7张图片

    相信你已经掌握爬虫基本的套路了,但你还需要去不断熟悉,能独立写出代码为止。

    写代码不仅要细心,也需要耐心。很多人从入门到放弃,并不是因为编程这件事情有多难,而是某次实践过程中,遇到一个小问题。

    好了,这节分享就到这里!插播一条广告。


    关注微信公众号的小伙伴们注意了,我们新一期的Python系统学习班今天就要开始第一节的课程了,如果你是想要系统学习并且向要从事这方面工作的同学欢迎联系我。


    QQ:1015861337
    微信:Lc1015861337


    我们的上课方式是:从零基础到项目框架开发,为期半年的系统学习,期限是一年,在线直播授课,课后老师一对一辅导解答 ,全天在线解答学员问题,课后还有高清录像和笔记发你巩固复习。每一期我们还有有升班开始对你的学习情况 进行一个测试。给大家看下我们VIP学员对我们的评价。

    Python爬虫入门 | 5 爬取小猪短租租房信息_第8张图片

    Python爬虫入门 | 5 爬取小猪短租租房信息_第9张图片


    这是我们的系统学习框架图:


    web开发全套路线图:


    Python爬虫入门 | 5 爬取小猪短租租房信息_第10张图片


    Python爬虫开发全套路线图:


    Python爬虫入门 | 5 爬取小猪短租租房信息_第11张图片


    最后,喜欢请关注吧。

    Python爬虫入门 | 5 爬取小猪短租租房信息_第12张图片




  • 你可能感兴趣的:(Python爬虫入门 | 5 爬取小猪短租租房信息)