【问题标题】:Scrapy choose from dropdown menuScrapy 从下拉菜单中选择
【发布时间】:2014-11-18 02:30:43
【问题描述】:

我正在尝试使用 scrapy 抓取此页面 https://www.stickyguide.com/dispensaries/leaf-lab/。 很长一段时间以来,我都无法从该页面抓取评论。如果有人有处理 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"></'>

如果我可以使用任何方法来确保在加载 javascript 之前抓取 scrapy? 上网查了一下方法,使用selenium包可能是一种解决方案,但可能效率不高。

2) 我遇到的另一个问题是我只想从药房抓取数据。我需要从 Review 模块旁边的下拉菜单中选择“VIEW: Dispensary Only”选项。我查看了 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=')})">

如果我可以使用任何方法来请求选项“VIEW:Dispensary Only”的内容? 我在stackoverflow上尝试了很多方法,但仍然无法解决。

提前谢谢你

【问题讨论】:

    标签: javascript ajax xpath scrapy scrapy-spider


    【解决方案1】:

    您需要打开您的开发工具 (F12),查找这段 html 的加载位置,然后请求获取它。我可以看到评论已加载此请求(POST 到 /update_review_section,表单正文中包含三个键和值),请记住在开发工具中保留复选框“preserve_log”,这将允许您查看页面加载时会发生什么。在屏幕截图中查看突出显示的请求

    :

    【讨论】:

    • 非常感谢您的快速回复。
    • 目前我得到的html页面的正文是这样的:new Ajax.Request('/update_reviews_section/2487', {asynchronous:true, evalScripts:true, parameters:'sort_by=' + $('sort').value + '&amp;authenticity_token=' + encodeURIComponent('eVbHui2XbRZx9eMH9hABjsai3A42AGh8sWHa5wqbgAw=')}) 然后我做正则表达式提取并得到request_url = 'https://www.stickyguide.com/update_reviews_section/2487'request_data = {'authenticity_token': 'eVbHui2XbRZx9eMH9hABjsai3A42AGh8sWHa5wqbgAw%3D', 'sort_by': 'VIEW%3A%20Dispensary%20Only'}
    • 通过调用yield FormRequest(request_url, callback=self.RubiGuessItem, formdata=request_data),我仍然无法得到适当的回应。你能帮我解决这个问题吗?我是抓取 javascript 的新手。谢谢!
    猜你喜欢
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多