我正在尝试将Tripadvisor的评论作为一个完整的新手。
我正在使用Susanli2016中的代码。
它对一个link起作用(尽管删除了属性“ language”),但对其他链接(对于example则无效了)
我收到错误:
select * from
(
select p.ID,p.ProductName, p.SalesPrice, pc.CategoryID, pic.BigPath,
row_number() over(partition by p.ID,p.ProductName order by pic.BigPath) as rn
from tbl_Products p
LEFT join tbl_ProductToCategory pc on p.ID = pc.ProductID
left outer join tbl_ProductImages pic on pic.ProductID = p.ID
where pc.CategoryID = 1174
)A where rn=1
(其中5,695是页面中的评论数)
我在这里附上代码,以防有人可以帮助我。
非常感谢! 西尔维娅
-
以下是完整的代码:
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'
感谢所有评论者。我意识到在意大利和美国范例中存在的问题在于编写了千位分隔符(我们使用“。”,而美国人使用“,”)。
答案 0 :(得分:3)
在尝试使用5.695
将其强制转换为int之前,您似乎具有以下字符串来表示视图数num_reviews = int(num_reviews)
。
.
中的5.695
可能是千位分隔符。
因此,在使用.
之前,请像这样删除int()
:
num_reviews = num_reviews.replace('.', '')
num_reviews = int(num_reviews)
答案 1 :(得分:0)
该错误是由于您试图转换的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
答案 2 :(得分:0)
您不能直接将其解析为整数值,在这种情况下,您首先将其转换为float,然后再将其转换为Int。
num_reviews = int(float(num_reviews))