作為一個完整的新手,我正在嘗試抓取一些 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)

米琪卡哇伊
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

MYYA
TA貢獻1868條經驗 獲得超4個贊
您不能直接解析為整數值,在這種情況下,您首先將其轉換為浮點數,然后再將其轉換為 Int。
num_reviews = int(float(num_reviews))
添加回答
舉報
0/150
提交
取消