首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从booking.com中抓取评论

从booking.com中抓取评论
EN

Stack Overflow用户
提问于 2022-10-10 08:40:40
回答 1查看 48关注 0票数 -2

我正在尝试从booking.com中的一个特定的酒店页面获取所有的评论,我尝试过这段代码,但是我没有得到任何打印出来的东西。

这是我尝试过的代码:

代码语言:javascript
复制
import urllib.request
from bs4 import BeautifulSoup
url='https://www.booking.com/hotel/sa/sarwat-park.ar.html?aid=304142&label=gen173nr-1DCAEoggI46AdIM1gEaMQBiAEBmAERuAEHyAEM2AED6AEBiAIBqAIDuAL_oY-aBsACAdICJDE5YzYxY2ZiLWRlYjUtNDRjNC04Njk0LTlhYWY4MDkzYzNhNNgCBOACAQ&sid=c7009aac67195c0a7ef9aa63f6537581&dest_id=6376991;dest_type=hotel;dist=0;group_adults=2;group_children=0;hapos=1;hpos=1;no_rooms=1;req_adults=2;req_children=0;room1=A%2CA;sb_price_type=total;sr_order=popularity;srepoch=1665388865;srpvid=1219386046550156;type=total;ucfs=1&#tab-reviews'
req = urllib.request.Request(
    url,
    headers={
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36',
    }
)
    
f = urllib.request.urlopen(req)
soup = BeautifulSoup(f.read().decode('utf-8'), 'html.parser')
reviews = soup.findAll("li", {"class": "review_item clearfix "})
for review in reviews:
    print(review.find("div", {"class": "review_item_header_content"}).text)
EN

回答 1

Stack Overflow用户

发布于 2022-10-10 08:59:51

首先,整个页面上没有"review_item“类。一种更好的方法是使用etree从您现在拥有的评论列表的xPath中查找和获取详细信息。

代码语言:javascript
复制
//*[@id="b2hotelPage"]/div[25]/div/div/div/div[1]/div[2]/div/ul

然后你就可以做一些事情

代码语言:javascript
复制
webpage = req.get(URL, headers=headers)
soup = bs(webpage.content, "html.parser")
dom = etree.HTML(str(soup))

listTarget = dom.xpath('//*[@id="b2hotelPage"]/div[25]/div/div/div/div[1]/div[2]/div/ul')

这将给出lxml对象的列表,这些对象本质上是您的注释卡。

然后你可以用类似的方式处理它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74012222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档