鱼C论坛

 找回密码
 立即注册
查看: 3087|回复: 2

[已解决]xpath能加入变量参数吗?

[复制链接]
发表于 2018-5-9 18:40:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 heywilliam 于 2018-5-9 18:42 编辑

我在爬取链家地产的房产信息(https://gz.lianjia.com/zufang/pg2/)
现在正在抓取每个房子的地铁信息,如图红色画圈部分所示,

Snipaste_2018-05-09_18-28-40.png

每套房产都独立的放在含有data-index元素的大标签里
在网页源代码中地铁信息存放在大标签下class='fang-subway-ex'的小标签中,由于不是每个房子都有地铁标签,所以不是每个房子都有class='fang-subway-ex'的小标签

Snipaste_2018-05-09_18-27-33.png

我想要通过以下代码遍历每一套房产(一共30套)的地铁信息,有地铁的话就在sub集合里存入地铁信息,没有的话就存入一个空格
我尝试在代码里放入$val插入参数,但是运行起来好像无法实现,请问是我写法有错误吗?

  1. for i in range(0,30):
  2.         sub = []
  3.         decoration = []
  4.         haskey = []
  5.         a = response.xpath(".//li[@data-index=$val]//span[@class='haskey-ex']/span/text()", val = str(i)).extract()
  6.         if a == []:
  7.                 sub.append(' ')
  8.         else:
  9.                 sub.append(a)
复制代码


希望达到的输出是

['离地铁XXX', ' ', ' ', ' ', '离地铁XXX', ' ', '离地铁XXX']

而不是:

['离地铁XXX', '离地铁XXX', '离地铁XXX']
最佳答案
2018-5-9 19:01:51
xpath0="//*[@id="house-lst"]/li[{}]"
for i in range(1,31):
    xpath=xpath0.format(i)

不过需要一层一层的去找,比较累
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-5-9 19:01:51 | 显示全部楼层    本楼为最佳答案   
xpath0="//*[@id="house-lst"]/li[{}]"
for i in range(1,31):
    xpath=xpath0.format(i)

不过需要一层一层的去找,比较累
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-10 11:41:49 | 显示全部楼层
chakyam 发表于 2018-5-9 19:01
xpath0="//*[@id="house-lst"]/li[{}]"
for i in range(1,31):
    xpath=xpath0.format(i)

谢谢!试了一下成功了!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-11 11:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表