Python 如何使用Scrapy获取Html OnClick参数

Python 如何使用Scrapy获取Html OnClick参数,python,web-scraping,scrapy,Python,Web Scraping,Scrapy,我想从链接中提取NadLanID值$ 我使用Firebug检查我要提取的html代码,NadlanId值为: 我使用以下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

我想从链接中提取NadLanID值$

我使用Firebug检查我要提取的html代码,NadlanId值为:

我使用以下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值?

在本例中,您希望从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'"]
#捕获在show_ad()之间的任何内容
["'2'",
"'1'",
“'/Nadlan/salesDetails.php',
“NadlanID”,
"'1614569'",
"'644'"]

此外,在更改默认用户代理字符串之前,我无法获取页面内容。当我试着模仿Chrome时,它开始工作了。可能是一些基本类型的机器人保护。感谢您的帮助,我尝试了您的解决方案,但在re.findall之后仍然使用f.write(response.body),我没有得到任何价值。这是因为我需要模仿chrome的行为吗?如果是,我该怎么做?