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

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

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

1.爬取租房标题

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

多复制几个房屋的标题 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 只在<li>后序号变化,于是,秒写出爬取整页标题的 xpath:

//*[@id=“page_list”]/ul/li/div[2]/div/a/span
还是固定的套路,让我们尝试把整页的标题爬下来:

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

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

顺着标题的标签网上找,找到整个房屋信息标签, 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]
好了,来运行一下试试:

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]
来尝试运行一下:

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学习交流群:639584010,学习资料,答疑解惑与你共享。

原文地址:http://blog.51cto.com/13719825/2147092

时间: 2024-12-22 04:27:16

Python爬虫入门 | 5 爬取小猪短租租房信息的相关文章

Python 爬虫入门之爬取妹子图

Python 爬虫入门之爬取妹子图 来源:李英杰  链接: https://segmentfault.com/a/1190000015798452 听说你写代码没动力?本文就给你动力,爬取妹子图.如果这也没动力那就没救了. GitHub 地址: https://github.com/injetlee/Python/blob/master/%E7%88%AC%E8%99%AB%E9%9B%86%E5%90%88/meizitu.py 爬虫成果 当你运行代码后,文件夹就会越来越多,如果爬完的话会有2

Python 爬虫入门(二)——爬取妹子图

Python 爬虫入门 听说你写代码没动力?本文就给你动力,爬取妹子图.如果这也没动力那就没救了. GitHub 地址: https://github.com/injetlee/Python/blob/master/%E7%88%AC%E8%99%AB%E9%9B%86%E5%90%88/meizitu.py 公众号:[智能制造专栏].欢迎关注,分享智能制造与编程那些事. 爬虫成果 当你运行代码后,文件夹就会越来越多,如果爬完的话会有2000多个文件夹,20000多张图片.不过会很耗时间,可以在

Python 爬虫入门(一)——爬取糗百

爬取糗百内容 GitHub 代码地址https://github.com/injetlee/Python/blob/master/qiubai_crawer.py 微信公众号:[智能制造专栏],欢迎关注. 本文目标 掌握爬虫的基本概念 Requests 及 Beautiful Soup 两个 Python 库的基本使用 通过以上知识完成糗百段子抓取 爬虫基本概念 爬虫也称网页蜘蛛,主要用于抓取网页上的特定信息.这在我们需要获取一些信息时非常有用,比如我们可以批量到美图网站下载图片,批量下载段子.

Python爬虫入门 | 4 爬取豆瓣TOP250图书信息

先来看看页面长啥样的:https://book.douban.com/top250 我们将要爬取哪些信息:书名.链接.评分.一句话评价-- 1. 爬取单个信息 我们先来尝试爬取书名,利用之前的套路,还是先复制书名的xpath: 得到第一本书<追风筝的人>的书名xpath如下: //*[@id="content"]/div/div[1]/div/table[1]/tbody/tr/td[2]/div[1]/a 得到xpath,我们就可以按照之前的方法来尝试一下: 返回的竟然是

python 学习 - 爬虫入门练习 爬取链家网二手房信息

import requests from bs4 import BeautifulSoup import sqlite3 conn = sqlite3.connect("test.db") c = conn.cursor() for num in range(1,101): url = "https://cs.lianjia.com/ershoufang/pg%s/"%num headers = { 'User-Agent': 'Mozilla/5.0 (Windo

【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http://www.xiaohuar.com/,让你体验爬取校花的成就感. Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. Scrapy吸引人的地方在于它是一个框架,任何人都可

爬虫入门之爬取策略 XPath与bs4实现(五)

爬虫入门之爬取策略 XPath与bs4实现(五) 在爬虫系统中,待抓取URL队列是很重要的一部分.待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那个页面,后抓取哪个页面.而决定这些URL排列顺序的方法,叫做抓取策略.下面重点介绍几种常见的抓取策略: 1 深度优先遍历策略: 深度优先遍历策略是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接.我们以下面的图为例:遍历的路径:A-F-G E-H-I B C D

教你分分钟学会用python爬虫框架Scrapy爬取你想要的内容

教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 python爬虫学习课程,下载地址:https://pan.baidu.com/s/1v6ik6YKhmqrqTCICmuceug 课程代码原件:课程视频: 原文地址:http://blog.51cto.com/aino007/2123341

爬虫练手,爬取新浪双色彩,信息并进行分析

爬虫练手,爬取新浪双色彩,信息并进行分析 import requests from lxml.html import etree url = 'http://zst.aicai.com/ssq/betOrder/' response = requests.get(url) response_html = etree.HTML(response.text) text_path = '/html/body/div[7]/form/div[2]/table/tbody/tr/td/text()' da