最近学以致用,使用python3的requests package 爬取 链家-滨江
在爬取过程中基本没有遇到什么坑,可能链家的反爬机制就没有吧
主要流程分成 两步:
第一步是 获取当前页面的内容
第二步是 生成规则的url,用户分页爬取
import requests
import json
import re
from lxml import etree
header={
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
'Connection': 'keep-alive',
'Host': 'hz.lianjia.com',
'Referer': 'https://hz.lianjia.com/zufang/rs%E6%BB%A8%E6%B1%9F/',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
}
response=requests.get('https://hz.lianjia.com/zufang/binjiang/rs%E6%BB%A8%E6%B1%9F/',headers=header)
i=1
tree = etree.HTML(response.text)
nodes=tree.xpath('//div[@class="content__list"]/div[@class="content__list--item"]')
'''
https://hz.lianjia.com/zufang/binjiang/pg3rs%E6%BB%A8%E6%B1%9F/#contentList
https://hz.lianjia.com/zufang/binjiang/pg100rs%E6%BB%A8%E6%B1%9F/#contentList
https://hz.lianjia.com/zufang/binjiang/pg100rs%E6%BB%A8%E6%B1%9F/#contentList
'''
print(tree.xpath('//div[@class="content__pg"]'))
pg=tree.xpath('//div[@class="content__pg"]')[0]
print(pg.attrib)
total_page=int(pg.attrib['data-totalpage'])
for index in range(1,101):
url='https://hz.lianjia.com/zufang/binjiang/pg{}rs%E6%BB%A8%E6%B1%9F/#contentList'.format(index)
print(url)
tree = etree.HTML(response.text)
nodes=tree.xpath('//div[@class="content__list"]/div[@class="content__list--item"]')
for node in nodes:
name=node.xpath('./div[@class="content__list--item--main"]/p[1]/a/text()')[0].strip()
tags=node.xpath('./div[@class="content__list--item--main"]/p[2]/child::node()')
list1=[]
for tag in tags:
if isinstance(tag,str):
data=str(tag).strip()
if len(data)>0:
list1.append(data)
elif tag.attrib.has_key('class') and tag.attrib['class']=='hide':
list1.append('隐藏内容:')
for t in tag.xpath('./child::node()'):
if isinstance(t,str):
data=str(t).strip()
if len(data)>0:
list1.append(data)
else:
list1.append(str(tag.text).strip())
brand =node.xpath('./div[@class="content__list--item--main"]/p[3]/text()')[0].strip()
item_time =node.xpath('./div[@class="content__list--item--main"]/p[4]/text()')[0].strip()
item_bottem =",".join(node.xpath('./div[@class="content__list--item--main"]/p[5]/i/text()'))
item_price =node.xpath('./div[@class="content__list--item--main"]/span[@class="content__list--item-price"]/em/text()')[0]
item_price_unit=node.xpath('./div[@class="content__list--item--main"]/span[@class="content__list--item-price"]/text()')[0].strip()
print(i,name," ".join(list1),brand,item_time,item_bottem,item_price+item_price_unit)
i+=1
当前第几页
[<Element div at 0x106b797c8>]
{'class': 'content__pg', 'data-el': 'page_navigation', 'data-url': '/zufang/binjiang/pg{page}rs%E6%BB%A8%E6%B1%9F/', 'data-totalpage': '100', 'data-curpage': '1'}
https://hz.lianjia.com/zufang/binjiang/pg1rs%E6%BB%A8%E6%B1%9F/#contentList
1 魔方公寓 杭州滨康路店 一居室(宽敞大窗型) 仅剩3间 / 25㎡ / 北 / 1室1厅1卫 魔方公寓 4天前发布 独栋公寓,月租,拎包入住,近地铁,押一付一,新上 2850元/月
2 中赢康康谷 2室2厅 5700元 滨江 - 滨江区政府 / 41㎡ / 西 / 2室2厅2卫 隐藏内容: 高楼层 (18层) 链家 22天前发布 近地铁,随时看房 5700元/月
3 整租 · 金铂湾 1居室 4199 滨江 - 滨江区政府 / 50㎡ / 南 / 1室1厅1卫 隐藏内容: 中楼层 (24层) 门店优选 18天前发布 近地铁,精装,随时看房 4199元/月
4 合租 · 温馨人家 4室1厅 滨江 - 滨江区政府 / 16㎡ / 南 / 4室1厅2卫 隐藏内容: 低楼层 (6层) 自如 6天前发布 公寓,独立卫生间,近地铁,押一付一,新上,随时看房 3090元/月
5 合租 · 滨康二苑 6室1厅 滨江 - 长河 / 17㎡ / 南 / 6室1厅3卫 隐藏内容: 高楼层 (6层) 自如 6天前发布 公寓,独立卫生间,押一付一,新上,随时看房 2590元/月
6 合租 · 湖漫雅筑 4室1厅 滨江 - 白马湖 / 15㎡ / 南 / 4室1厅2卫 隐藏内容: 中楼层 (11层) 自如 5天前发布 公寓,独立卫生间,押一付一,新上,随时看房 2590元/月
7 合租 · 江南豪园 5室1厅 滨江 - 滨江区政府 / 19㎡ / 南 / 5室1厅2卫 隐藏内容: 低楼层 (29层) 自如 5天前发布 公寓,独立卫生间,近地铁,押一付一,新上,随时看房 3060元/月
8 合租 · 观邸国际 4室1厅 滨江 - 浦沿 / 15㎡ / 南 / 4室1厅2卫 隐藏内容: 中楼层 (32层) 自如 5天前发布 公寓,独立卫生间,押一付一,新上,随时看房 2790元/月
9 合租 · 锦绣江南 4室1厅 滨江 - 长河 / 23㎡ / 南 / 4室1厅2卫 隐藏内容: 中楼层 (18层) 自如 5天前发布 公寓,独立卫生间,押一付一,新上,随时看房 3060元/月
10 金铂湾 1室1厅 6000元 滨江 - 滨江区政府 / 90㎡ / 南 / 1室1厅1卫 隐藏内容: 低楼层 (24层) 链家 18天前发布 近地铁 6000元/月
11 整租 · 自住装修,三开间朝南 滨江 - 浦沿 / 89㎡ / 南 / 2室1厅1卫 隐藏内容: 低楼层 (26层) 链家 9天前发布 近地铁,精装,随时看房 5300元/月
12 合租 · 寰宇天下 3室1厅 滨江 - 滨江区政府 / 14㎡ / 南 / 3室1厅2卫 隐藏内容: 低楼层 (33层) 自如 4天前发布 公寓,独立卫生间,近地铁,押一付一,新上,随时看房 3230元/月
13 合租 · 长江西苑 7室1厅 滨江 - 长河 / 18㎡ / 南 / 7室1厅4卫 隐藏内容: 高楼层 (7层) 自如 4天前发布 公寓,独立卫生间,押一付一,新上,随时看房 2560元/月
14 整租 · 彩虹豪庭 大四房 一线江景 滨江 - 彩虹城 / 243㎡ / 南 北 / 4室2厅3卫 隐藏内容: 低楼层 (31层) 链家 今天发布 近地铁,精装,新上 24000元/月
15 整租 · 钱塘江边精装公寓 一室一厅 大面积户型 滨江 - 滨江区政府 / 63㎡ / 南 / 1室1厅1卫 隐藏内容: 高楼层 (24层) 链家 1个月前发布 近地铁,精装 4800元/月
16 合租 · 彩虹城 5室1厅 滨江 - 彩虹城 / 17㎡ / 南 / 5室1厅2卫 隐藏内容: 低楼层 (12层) 自如 3天前发布 公寓,独立卫生间,近地铁,押一付一,新上,随时看房 2830元/月
17 荣安望江南 2室1厅 6500元 滨江 - 滨江区政府 / 88㎡ / 南 / 2室1厅1卫 隐藏内容: 低楼层 (26层) 链家 13天前发布 近地铁,随时看房 6500元/月
18 荣安望江南 2室2厅 8000元 滨江 - 滨江区政府 / 87㎡ / 南 / 2室2厅1卫 隐藏内容: 高楼层 (25层) 链家 1个月前发布 近地铁 8000元/月
19 整租 · 龙湖春江郦城 3居室 6970 滨江 - 滨江区政府 / 88㎡ / 西南 / 3室1厅1卫 隐藏内容: 中楼层 (34层) 门店优选 2个月前发布 随时看房 6970元/月
20 整租 · 江滨澜廷 1居室 6300 滨江 - 滨江区政府 / 56㎡ / 东 / 1室1厅1卫 隐藏内容: 高楼层 (24层) 门店优选 1个月前发布 近地铁,精装,随时看房 6300元/月
21 整租 · 玲珑府 3居室 5500 滨江 - 西兴 / 49㎡ / 南 / 3室2厅2卫 隐藏内容: 低楼层 (21层) 门店优选 1个月前发布 近地铁,精装,双卫生间,随时看房 5500元/月
。。。。。。。
2998 整租 · 彩虹豪庭 精装温馨小三室 高档小区 拎包入住 滨江 - 彩虹城 / 90㎡ / 南 / 3室1厅1卫 隐藏内容: 低楼层 (31层) 链家 23天前发布 近地铁,精装 9800元/月
2999 整租 · 汉峰峰公馆 1居室 5500 LOFT 滨江 - 滨江区政府 / 51㎡ / 北 / 1室1厅1卫 隐藏内容: 中楼层 (22层) 门店优选 3个月前发布 精装,随时看房 5500元/月
3000 整租 · 彩虹城 3室2厅 8500元 滨江 - 彩虹城 / 151㎡ / 南 北 / 3室2厅2卫 隐藏内容: 高楼层 (6层) 链家 8天前发布 近地铁,精装,双卫生间 8500元/月