Table from data to be extracted提取特定类别下的文本并将其存储在相应的列表中
我正在尝试从“ https://www.airlinequality.com/airline-reviews/vietjetair/page/1/”提取数据。我能够提取摘要,评论和用户信息,但无法获取表格数据。表格数据需要存储在相应的列表中。不同的用户评论具有不同的评分数量。下面的代码给出了我尝试过的几件事。所有人都给出了空清单。 使用xpath提取评论
(review = driver.find_elements_by_xpath('//div[@class="tc_mobile"]//div[@class="text_content "]') )
以下是一些xpath给出了空列表。在这里,我m = am尝试提取与“旅行者类型”相对应的数据/文本
tot = driver.find_elements_by_xpath('//div[@class="tc_mobile active"]//div[@class="review-stats"]//table[@class="review-ratings"]//tbody//tr//td[@class="review-rating-header type_of_traveller "]//td[@class="review-value "]')
tot1 = driver.find_elements_by_xpath('//div[@class="tc_mobile"]//div[@class="review-stats"]//table//tbody//tr//td[@class="review-rating-header type_of_traveller "]//td[@class="review-value "]')
tot2 = driver.find_elements_by_xpath('//div//div/table//tbody//tr//td[@class="review-rating-header type_of_traveller "]//td[@class = "review-value "]')
答案 0 :(得分:0)
此代码应执行您想要的操作。所有代码在基本级别上所做的工作都是遵循DOM结构,然后遍历该层的每个元素。
它将每个评论的值提取到字典中,然后将其附加到结果列表中:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.airlinequality.com/airline-reviews/vietjetair/page/1/")
review_tables = driver.find_elements_by_xpath('//div[@class="tc_mobile"]//table[@class="review-ratings"]//tbody') # Gets all the review tables
results = list() # A list of all rating results
for review_table in review_tables:
review_rows = review_table.find_elements_by_xpath('./tr') # Gets each row from the table
rating = dict() # Holds the rating result
for row in review_rows:
review_elements = row.find_elements_by_xpath('./td') # Gets each element from the row
if review_elements[1].text == '12345': # Logic to extract star rating as int
rating[review_elements[0].text] = len(review_elements[1].find_elements_by_xpath('./span[@class="star fill"]'))
else:
rating[review_elements[0].text] = review_elements[1].text
results.append(rating) # Add rating to results list
在结果列表中输入评论数据的示例:
{ “飞行日期”:“ 2019年1月”, “物有所值”:2 “客舱员工服务”:3, “路线”:“胡志明市到曼谷”, “旅行者类型”:“业务”, “推荐”:“否”, “座椅舒适度”:3, “客舱”:“经济舱”, “地面服务”:1 }