作为一个完整的新手,我正在尝试抓取一些 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 回答
![?](http://img1.sycdn.imooc.com/54584d080001566902200220-100-100.jpg)
潇潇雨雨
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)
![?](http://img1.sycdn.imooc.com/54585050000156a302200220-100-100.jpg)
米琪卡哇伊
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
![?](http://img1.sycdn.imooc.com/54584dc4000118d302200220-100-100.jpg)
MYYA
TA贡献1868条经验 获得超4个赞
您不能直接解析为整数值,在这种情况下,您首先将其转换为浮点数,然后再将其转换为 Int。
num_reviews = int(float(num_reviews))
添加回答
举报
0/150
提交
取消