为了账号安全,请及时绑定邮箱和手机立即绑定

使用 BeautifulSoup 抓取 Tripadvisor 评论时出现 ValueError

使用 BeautifulSoup 抓取 Tripadvisor 评论时出现 ValueError

函数式编程 2022-01-11 17:05:00
作为一个完整的新手,我正在尝试抓取一些 Tripadvisor 评论。我正在使用来自Susanli2016 的代码。它适用于一个链接(尽管删除了属性“语言”),但它不适用于任何其他链接(例如。)我收到错误:        Traceback (most recent call last):      File "<pyshell#37>", line 4, in <module>        items = scrape(url)      File "<pyshell#13>", line 11, in scrape        items = parse(session, url + '?filterLang=' + lang)      File "<pyshell#18>", line 15, in parse        num_reviews = int(num_reviews) # convert text into integer    ValueError: invalid literal for int() with base 10: '5.695'(其中 5,695 是页面中的评论数)我在这里附上代码,以防有人可以帮助我。
查看完整描述

3 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

5.695在尝试将其类型转换为 int with 之前,您似乎具有以下视图数量的字符串num_reviews = int(num_reviews)。


可能.in5.695是千位分隔符。


所以.在使用之前删除这样的int():


num_reviews = num_reviews.replace('.', '')

num_reviews = int(num_reviews)


查看完整回答
反对 回复 2022-01-11
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

该错误是由于您尝试转换的 int 中的句号。为确保它适用于所有输入格式,您只需在转换为 int 之前过滤数字字符:


num_reviews = soup.find('span', class_='reviews_header_count').text # get text

num_reviews = num_reviews[1:-1] 

num_reviews = num_reviews.replace(',', '').replace('.','')

num_reviews = int(num_reviews)

或者以更通用的方式,仅在字符串中包含数字字符 num_reviews


查看完整回答
反对 回复 2022-01-11
?
MYYA

TA贡献1868条经验 获得超4个赞

您不能直接解析为整数值,在这种情况下,您首先将其转换为浮点数,然后再将其转换为 Int。

num_reviews = int(float(num_reviews))


查看完整回答
反对 回复 2022-01-11
  • 3 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信