Python 如何使用Scrapy获取Html OnClick参数
我想从链接中提取NadLanID值$ 我使用Firebug检查我要提取的html代码,NadlanId值为: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
我使用以下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值?在本例中,您希望从htmlonclick
属性检索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的行为吗?如果是,我该怎么做?