Я пытаюсь создать веб-браузер (как побочный проект), который извлекает отзывы из отелей Страница отзывов Google и печатает их на листе Excel. Страница бесконечно прокручивается и индексируется на 10, начиная с 0. Я использовал BeautifulSoup для этой цели. Мой код выглядит следующим образом:
import requests
import xlsxwriter
from bs4 import BeautifulSoup
index = 0
reviewlist = []
while index <= 700:
url = "https://www.google.com/async/reviewSort?vet=12ahUKEwibi8-45LriAhUXeisKHbROA6sQxyx6BAgBED0..i&ved=2ahUKEwibi8-45LriAhUXeisKHbROA6sQjit6BAgBEHw&rlz=1C1GCEB_enAU817AU817&yv=3&async=feature_id:0x6ad642b40a5fb91f%3A0xd4af4255ed578be2,review_source:All%20reviews,sort_by:qualityScore,start_index:{},is_owner:false,filter_text:,next_page_token:,_pms:s,_fmt:pc".format(index)
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
tenreviews = soup.findAll("span", {"jsl": "$t t-uvHqeLvCkgA;$x 0;"})
reviewlist += tenreviews
index += 10
# Export to Excel sheet
workbook = xlsxwriter.Workbook('doubletreereviews.xlsx')
worksheet = workbook.add_worksheet()
row = 0
for review in reviewlist:
worksheet.write(row, 0, review)
row += 1
workbook.close()
При запуске моего кода выдается следующая ошибка типа.
TypeError: expected string or bytes-like object
Я заметил, что некоторые элементы будут печататься нормально, в то время как другие вызовут ошибку. Например, если я заменяю список конкретной отдельной рецензией, добавляя приведенный ниже код перед попыткой экспорта в лист Excel, это работает, создавая лист Excel с одной рецензией в A1.
reviewlist = reviewlist[4]
Из этого я сделал вывод, что это как-то связано с тем фактом, что в проверке четырех списков нет дочернего элемента / потомка (не уверен, правильно ли я использую этот термин, который я нашел в документации BeautifulSoups), в то время как другие Отзывы делают.
Кто-нибудь сможет пролить свет на это и помочь мне исправить это?
Если есть какие-либо проблемы с моим вопросом, объяснением или кодом, не стесняйтесь, дайте мне знать. Я пытаюсь узнать как можно больше!