如何使用Scrapy获取Html OnClick参数

时间:2017-08-18 09:57:55

标签: python web-scraping scrapy

我想从链接http://www.yad2.co.il/Nadlan/sales.php?City=%E1%F0%E9%EE%E9%F0%E4+%E2% $

中提取NadLanID值

我使用Firebug来检查我要提取的html代码,NadlanId值是: <td onclick="show_ad('2','1','/Nadlan/salesDetails.php','NadlanID','1614569','644');"> בית אריה - יאיר שטרן </td>

我使用以下Scrapy代码检查Scrapy是否解析了上面的html代码:

import scrapy

class QuotesSpider(scrapy.Spider):
    name = "quotes"
    start_urls = [
    'http://www.yad2.co.il/Nadlan/sales.php?City=%E1%F0%E9%EE%E9%F0%E4+%E2%$
]

def parse(self, response):
    page = response.url.split("/")[-2]
    filename = 'quotes-%s.html' % page
    with open(filename, 'wb') as f:
        f.write(response.body)`

但是在回复中没有NadlanId。

我如何获得NadlanId值?

1 个答案:

答案 0 :(得分:2)

在这种情况下,您希望从html onclick属性中检索javascript函数参数。

首先我们找到整个onclick文本:

text = response.xpath("//td/@onclick").extract_first()

然后可以使用简单的正则表达式模式来查找函数参数:

# capture anything in between the () of show_ad
< re.findall("show_ad\((.+?)\)", text)[0].split(',')
>["'2'",
  "'1'",
  "'/Nadlan/salesDetails.php'",
  "'NadlanID'",
  "'1614569'",
  "'644'"]