如果源代码中不存在<a>元素,如何刮取url?

2024-09-27 07:33:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目标是抓取到每个酒店的链接,但是源代码根本没有<a>元素。。。。我该怎么办?网站是如何隐藏他们的链接的?你知道吗

每个名字都应该有一个链接。。。但源代码是这样的:

<h3 class="hotel-name" data-selenium="hotel-name">Hilton Osaka</h3>

Added Link here


Tags: name元素目标data源代码网站链接selenium
1条回答
网友
1楼 · 发布于 2024-09-27 07:33:01

还有一些工作要做,因为酒店名称只显示在你向下滚动,但得到的链接,至少应该让你去

from selenium import webdriver
from bs4 import BeautifulSoup as soup

url = 'https://www.agoda.com/pages/agoda/default/DestinationSearchResult.aspx?city=9590&checkIn=2019-02-05&los=1&rooms=1&adults=2&children=0&cid=-218&languageId=1&userId=bce6a6f2-6f57-418a-9c86-487872685cda&sessionId=ku5ccopu4cm2yqjetfge1fa4&pageTypeId=1&origin=HK&locale=en-US&aid=130589&currencyCode=HKD&htmlLanguage=en-us&cultureInfoName=en-US&ckuid=bce6a6f2-6f57-418a-9c86-487872685cda&prid=0&checkOut=2019-02-06&priceCur=HKD&textToSearch=Osaka&productType=-1&travellerType=1'

# opening up connection, grabbing the page
driver = webdriver.Chrome('C:/chromedriver_win32/chromedriver.exe')
driver.get(url)

# html parsing
page_soup = soup(driver.page_source, "html.parser")
containers = page_soup.find_all("li", {'data-selenium':'hotel-item'})

for ele in containers:
    try:
        link = 'http://www.aggoda.com' + ele.find('a')['href']
    except:
        link = ''

    try:
        name = ele.find('h3').text
    except:
        name = ''

    print ('Hotel: %s\nLink: %s\n' %(name, link))


driver.close()

相关问题 更多 >

    热门问题