Scrapy不刮整个文本

时间:2017-02-05 07:58:36

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

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

然而,刮刀只刮开了部分评论,而不是整个评论,我不知道为什么。

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

  

我们在1月期间在Acron住了6晚。关于酒店的一切都很完美。   工作人员和服务一样优秀。

     

令人惊讶的是,酒店的饮料和葡萄酒价格非常合理,因此无需徘徊。   我们在6晚的5个晚上在酒店吃饭,没有吃不好的饭。我们吃的一个晚上是"顺其自然"这是一家非常不错的餐厅,提供美味的食物,距离酒店约200码。

     

不要期望从当地的海滩过多。我们发现它们很拥挤和肮脏。

     

早餐很不寻常,因为早上7点到下午1点。食物再次出色,呈现得非常好。

     

不要期望从当地的海滩过多。我们发现它们很拥挤和肮脏。

     

除此之外,一个很棒的住宿。感谢所有员工。

     

2017年1月入住,作为一对夫妇旅行

然而,刮擦的评论只是:

  

我们在1月期间在Acron住了6晚。关于酒店的一切都很完美。\ n工作人员非常好,服务也很好。\ n令人惊讶的是酒店的饮料和葡萄酒价格非常合理,所以不需要闲逛。\ n我们在6晚的5晚吃了酒店并没有坏...

我想要的只是刮掉整个评论,也不包括转义字符,我该怎么做?

有关评论,请参阅此链接: Reviews

此外,我想抓取其他信息,如用户名,发表评论日期等,这些都完美地出来但是,我想要刮

  1. 用户名2.日期3.审核4.标题
  2. 并将每篇评论与字典中的所有上述详细信息一起存储,因此如何对网页上的所有评论进行此操作,

    例如:

    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 
    

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

您必须与https://www.tripadvisor.in/OverlayWidgetAjax?Mode=EXPANDED_HOTEL_REVIEWS&metaReferer=Hotel_Review进行POST调用以及这些值。

enter image description here

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