Python爬取小猪网租房信息

思路:抓取所有li,对li中的信息进行分析显示

1、标题爬取

我们发现这个是一个ul列表,所以我们可以先获取到所有li的xpath值。方法:右键li-->Copy-->Copy Xpath。

我们先复制标题的信息,多复制几个进行对比,结果如下:

对比后发现,标题只是li[]序号发生该表,所以我们可以很快写出标题的通用xpath信息:

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

我们再比较一下整个li和标题的xpath:

代码优化下,我们先把整页的标题爬取下来。

import requests

from lxml import etree

import time

url = "http://gz.xiaozhu.com/"

headers = {"User-Agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"}

response = requests.get(url,headers=headers)

data1 = response.content.decode()

h = etree.HTML(data1)

#获取到所有的li

home = h.xpath('//*[@id="page_list"]/ul/li')

time.sleep(2) #防止IP被封,加个睡眠

for div in home: #对li进行筛选,输出

#利用xpath的区别选取标题

title = div.xpath('./div[2]/div/a/span/text()')[0]

print(title)

结果展示:

圆融|昌岗双地铁口邻美院江南西琶洲南站一房

长隆欢乐世界南门南站地铁汉溪长隆站兰若小屋

【当唐•三度】东山口独栋西洋别墅loft单间

我宿-广州南站/广交会/长隆地铁旁复式趣玩房

【博物馆·生活空间】榻榻米双床房

广州塔全景小蛮腰江景大投影豪华双人套房2

长隆景区旁地铁线直达广州塔琶洲展馆复式美居

客村双地铁上盖自带花园园林整套独立日式风民宿

【中国台湾】北京路东山口地铁旁民国别墅品味老广州

琶洲广交会长隆地铁珠江新城广州塔复式2房整租

【10號】小公主|ins梦幻公主床独立卫生间

建设六-淘金-浪漫小屋

【Yoyo家】珠江新城 琶洲会展中心温馨复式

长隆地铁口舒适2米大床房复式商务家庭套房

【广交会优选】佛系阁楼,上下九沙面双地铁

长隆复式LOFT大投影地铁直达广州塔珠江新城

后面还有很多。。。

2、其他内容爬取

基本框架搭好了,我们往框架里面添加其他信息。

对比其他元素的xpath:

于是我们写下代码:

for div in home:

title = div.xpath('./div[2]/div/a/span/text()')[0] #标题

price = div.xpath('./div[2]/span[1]/i/text()')[0] #价格

describle = div.xpath('./div[2]/div/em/text()')[0].strip() #描述

time.sleep(1)

print("租房:"+"{}-->{}-->{}".format(title,price,describle))

结果展示:

3、爬取5页数据

看一下url的变化:

第一页:http://gz.xiaozhu.com/search-duanzufang-p1-0/

第二页:http://gz.xiaozhu.com/search-duanzufang-p2-0/

第三页:http://gz.xiaozhu.com/search-duanzufang-p3-0/

第四页:http://gz.xiaozhu.com/search-duanzufang-p4-0/

可以发现url的变化非常规律,只是p后面的数字不一样而已,而且和页码的序号是一模一样的,biu特否!

于是乎,加个循环我们就可以爬取多个页面的数据了。

所有代码:

import requests

from lxml import etree

import time

for i in range(1,6):

url = "http://gz.xiaozhu.com/search-duanzufang-p{}-0".format(i)

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"}

response = requests.get(url,headers=headers)

data1 = response.content.decode()

h = etree.HTML(data1)

home = h.xpath('.//*[@id="page_list"]/ul/li')#获取到所有的li

time.sleep(2)#防止IP被封,加个睡眠

for div in home:#对li进行筛选输出

title = div.xpath('./div[2]/div/a/span/text()')[0]#标题

price = div.xpath('./div[2]/span[1]/i/text()')[0]#价格

describle = div.xpath('./div[2]/div/em/text()')[0].strip()#描述

time.sleep(1)

print("租房:"+"{}-->{}-->{}".format(title,price.describle))

4、总结

本次学习主要内容:requests模块,xpath

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181031G1HBB700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券