【发布时间】: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
另外,我想抓取其他信息,如用户名、评论发布日期等,但这些信息都很完美,但我想抓取
- 用户名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