提取某个类下嵌入的文本

时间:2019-01-23 07:05:23

标签: python-3.x selenium-webdriver

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 "]')

1 个答案:

答案 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   }