gpt4 book ai didi

Python - 从表中提取数据的爬虫

转载 作者:太空宇宙 更新时间:2023-11-03 17:19:38 25 4
gpt4 key购买 nike

我正在尝试从 Agoda 提取客户评论部分 ( http://www.agoda.com/grand-hyatt-taipei/hotel/taipei-tw.html )。我感兴趣的数据位于'div id =“hotelreview-panel”'下,其中包括不同类型旅行者(例如商务旅行者)做出的评论数量以及相应的KPI量表(例如物有所值)每种类型的旅行者。

我有两个问题:

(1) 我无法通过BeautifulSoup的find函数找到正确的表。存在表类“customer-review-category-issues”,但它一直不返回任何内容。

import requests
import math
import csv
from bs4 import BeautifulSoup

HotelNames = ['grand-hyatt-taipei']

with open('agoda_hotel_reviews.csv', 'w') as csvfile:
for iHotel in HotelNames:
url = "http://www.agoda.com/"+iHotel+"/hotel/taipei-tw.html"
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser')

table_review = soup.find("table", {"class" : "customer-review-category-issues"})
record_rev = []

for row in table_review.findAll('tr'):
col = row.findAll('td')
rev_issue = col[1].string.split('\n').strip()[0]
rev_count = col[1].string.split('\n').strip()[1]
record_rev.extend([rev_issue], [rev_count])

filewriter = csv.writer(csvfile, delimiter='|', lineterminator='\n')
filewriter.writerow(record_rev)

(2) 当我切换到不同的旅行者类型时,如何提取 KPI,以便我的返回列表变成类似 [所有评论、35、8.1、9.2、9.0、9.1、9.1、8.3、商务旅行者、10、7.8] 、8.6、8.4、8.6、8.6、7.2],即[旅行者类型、评论数量、KPI 1(性价比)、KPI 2(位置)、... KPI 6]?

最佳答案

问题是:评论和页面的其他部分是通过对服务 API 的附加 XHR 请求动态加载的。如果您打开开发者工具并仅过滤 XHR 请求,您将看到:

enter image description here

如果您打算继续使用 requests+BeautifulSoup,您可能会对模拟对“GetReviewScore”和“GetReviewComments”端点的请求感兴趣。

或者,您可以采取更“高级”的方法,并使用 selenium 自动化真正的浏览器。 .

关于Python - 从表中提取数据的爬虫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33304169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com