Javascript 从下拉菜单中选择Scrapy

Javascript 从下拉菜单中选择Scrapy,javascript,ajax,xpath,scrapy,scrapy-spider,Javascript,Ajax,Xpath,Scrapy,Scrapy Spider,我正在尝试使用scrapy爬行此页面。 我现在很长一段时间都无法从这个页面抓取评论。如果有人有处理Ajax或Javascript的经验,请分享您的想法 1) 我可以很容易地获得用于审查的Xpath: response.xpath('//*[@id="reviews_section"]/div') 然而,我相信页面的评论部分是由javascript加载的。每次爬网此页面时,我都会得到以下Xpath值: <Selector xpath='//*[@id="reviews_sectio

我正在尝试使用scrapy爬行此页面。 我现在很长一段时间都无法从这个页面抓取评论。如果有人有处理Ajax或Javascript的经验,请分享您的想法

1) 我可以很容易地获得用于审查的Xpath:

response.xpath('//*[@id="reviews_section"]/div')    
然而,我相信页面的评论部分是由javascript加载的。每次爬网此页面时,我都会得到以下Xpath值:

<Selector xpath='//*[@id="reviews_section"]/div' data=u'<div id="loader">\n<div class="loader"></'>

如果有什么方法可以确保scrapy在加载javascript之前爬行? 当我在线查找该方法时,使用selenium软件包可能是一种解决方案,但可能效率不高

2) 我遇到的另一个问题是,我只想从药房抓取数据。我需要从查看模块旁边的下拉菜单中选择“查看:仅药房”选项。我看了一下HTML代码,发现它是一个Ajax对象

<select id="sort" name="sort" onchange="new Ajax.Request('/update_reviews_section/2487', {asynchronous:true, evalScripts:true, parameters:'sort_by=' + $('sort').value + '&amp;authenticity_token=' + encodeURIComponent('69BgJpnnj0tx/0lYwjIk75iFj0/l2R9EDj1No1FJX9o=')})">

是否有任何方法可用于请求选项“查看:仅药房”的内容? 我在stackoverflow上尝试了很多方法,但我仍然无法解决这个问题


提前感谢您

您需要打开您的开发工具(F12),查找这段html的加载位置,然后请求获取它。我可以看到评论是通过这个请求加载的(POST to/update_review_部分,表单主体中有三个键和值),记住在开发工具中保留复选框“preserve_log”,这将允许您查看页面加载时发生的情况。请参见屏幕截图中突出显示的请求


非常感谢您的快速回复。目前我看到html页面的主体如下:
new Ajax.Request('/update_reviews_section/2487',{asynchronous:true,evalscript:true,parameters:'sort_by='+$('sort')。value+'&authenticity_token='+encodeURIComponent('evbhui2xbrzxxx9emh9habjsai3a42agh8swha5wqbgaw='))
然后我执行正则表达式提取并获取
request\u url=https://www.stickyguide.com/update_reviews_section/2487“
请求\u数据={'authenticity\u token':'eVbHui2XbRZx9eMH9hABjsai3A42AGh8sWHa5wqbgAw%3D','sort\u by':'VIEW%3A%20药房%20仅限'}
。通过调用
生成表单请求(request\u url,callback=self.RubiGuessItem,formdata=request\u data)
,我仍然无法得到适当的响应。你能帮我一下吗?我对抓取javascript还不熟悉。谢谢!