我开发了一个scrapy项目,它将从tripadvisor.in中删除特定酒店评论部分的文本,
然而,刮刀只刮开了部分评论,而不是整个评论,我不知道为什么。
例如,这是一个特别的评论
我们在1月期间在Acron住了6晚。关于酒店的一切都很完美。 工作人员和服务一样优秀。
令人惊讶的是,酒店的饮料和葡萄酒价格非常合理,因此无需徘徊。 我们在6晚的5个晚上在酒店吃饭,没有吃不好的饭。我们吃的一个晚上是"顺其自然"这是一家非常不错的餐厅,提供美味的食物,距离酒店约200码。
不要期望从当地的海滩过多。我们发现它们很拥挤和肮脏。
早餐很不寻常,因为早上7点到下午1点。食物再次出色,呈现得非常好。
不要期望从当地的海滩过多。我们发现它们很拥挤和肮脏。
除此之外,一个很棒的住宿。感谢所有员工。
2017年1月入住,作为一对夫妇旅行
然而,刮擦的评论只是:
我们在1月期间在Acron住了6晚。关于酒店的一切都很完美。\ n工作人员非常好,服务也很好。\ n令人惊讶的是酒店的饮料和葡萄酒价格非常合理,所以不需要闲逛。\ n我们在6晚的5晚吃了酒店并没有坏...
我想要的只是刮掉整个评论,也不包括转义字符,我该怎么做?
有关评论,请参阅此链接: Reviews
此外,我想抓取其他信息,如用户名,发表评论日期等,这些都完美地出来但是,我想要刮
并将每篇评论与字典中的所有上述详细信息一起存储,因此如何对网页上的所有评论进行此操作,
例如:
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
答案 0 :(得分:0)
这是扩展这些文字并允许您查看完整评论的JavaScript,Scrapy can't run JavaScript code。
您可以通过链接完整评论并从这些页面抓取数据来解决此问题。
答案 1 :(得分:0)
你无法从该页面上删除评论,
您必须与https://www.tripadvisor.in/OverlayWidgetAjax?Mode=EXPANDED_HOTEL_REVIEWS&metaReferer=Hotel_Review进行POST调用以及这些值。
可以从https://www.tripadvisor.in/Hotel_Review-g635747-d7289335-Reviews-Acron_Waterfront_Resort-Baga_Goa.html页面上的属性reviews
抓取data-reviewid