【问题标题】:Scrapy not scraping entire textScrapy 不抓取整个文本
【发布时间】:2017-06-22 07:56:34
【问题描述】:

我开发了一个 scrapy 项目,它将从 tripadvisor.in 的特定酒店的评论部分中抓取文本,

但是,scraper 只抓取评论的一部分,而不是全部,我不知道为什么。

例如,这是一篇特别的评论

我们在一月份在 Acron 住了 6 晚。酒店的一切都很完美。 员工很棒,服务也很好。

令人惊讶的是,酒店的饮料和葡萄酒价格非常合理,因此无需闲逛。 我们 6 晚中有 5 晚在酒店用餐,没有吃到糟糕的饭菜。我们在外面吃的一晚是在“顺势而为”这是一家非常不错的餐厅,提供美味的食物,距离酒店约 200 码。

不要对当地的海滩抱有太多期望。我们发现它们又拥挤又脏。

早餐不寻常,因为它从早上 7 点到下午 1 点供应。再一次,食物很棒而且呈现得很好。

不要对当地的海滩抱有太多期望。我们发现它们又拥挤又脏。

除此之外,这是一次很棒的住宿。感谢所有工作人员。

2017 年 1 月入住,情侣旅行

但是,抓取的评论只有:

我们在一月份在 Acron 住了 6 晚。酒店的一切都很完美。\n工作人员和服务都非常出色。\n令人惊讶的是,酒店的饮料和葡萄酒价格非常合理,因此无需闲逛。\n我们 6 晚中有 5 晚在酒店用餐并没有坏...

我只想抓取整个评论,不包括转义字符,我该怎么做?

请参阅此链接查看评论: Reviews

另外,我想抓取其他信息,如用户名、评论发布日期等,但这些信息都很完美,但我想抓取

  1. 用户名2.日期3.评论4.标题

并将每条评论与上述所有详细信息存储在字典中,那么我该如何处理网页上的所有评论,

例如:

Username1 Date1 Title1 Review1

Username2 Date2 Title2 Review2

Username3 Date3 Title3 Review3
   .        .      .     .
   .        .      .     .
Usernamen Daten Titlen Reviewn

并以 csv 或 json 格式导出此字典?

这是一段代码:

 def parse(self,response):
    for reviews in response.css('#taplc_hr_reviews_list_0'):
        username = response.css('  div.username.mo > span::text').extract_first()
        head = response.css('div > div > div > div > a > span::text').extract_first()
        date = response.css('.reviewItemInline').xpath('span/@title').extract_first()
        review = response.css('div>div.col2of2>div>div.wrap>div>div>p::text').extract_first()
        holder = {'User':username,'Title':head,'Date':date,'Review':review}

        yield holder 

【问题讨论】:

    标签: python json web-scraping scrapy web-crawler


    【解决方案1】:

    这是扩展这些文本并允许您查看完整评论的 JavaScript,以及Scrapy can't run JavaScript code

    您可以通过点击指向完整评论的链接并从这些页面中抓取数据来解决此问题。

    或者,您可以使用 Selenium。 Thisthis 问题可能会有所帮助。

    【讨论】:

      【解决方案2】:

      您无法从该页面上删除评论,

      您必须连同这些值一起对 https://www.tripadvisor.in/OverlayWidgetAjax?Mode=EXPANDED_HOTEL_REVIEWS&metaReferer=Hotel_Review 进行 POST 调用。

      reviews 可以从 https://www.tripadvisor.in/Hotel_Review-g635747-d7289335-Reviews-Acron_Waterfront_Resort-Baga_Goa.html 页面上的属性 data-reviewid 获取

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-08
        • 2018-01-09
        • 1970-01-01
        • 2017-09-04
        • 1970-01-01
        相关资源
        最近更新 更多