webscraping:使用python:airbnb listing从html中的xpath中提取url

问题描述 投票:0回答:1

我正在尝试使用python 3库从AirBnb中的城市页面中提取列表的URL。我熟悉如何使用Beautifulsoup刮取更简单的网站并请求库。

网址:'https://www.airbnb.com/s/Denver--CO--United-States/homes'

element in the html

如果我检查页面上链接的元素(在Chrome中),我会得到:

xpath: "//*[@id="listing-9770909"]/div[2]/a"
selector: "listing-9770909 > div._v72lrv > a"

我的尝试:

import requests
from bs4 import BeautifulSoup

url = 'https://www.airbnb.com/s/Denver--CO--United-States/homes'
html = requests.get(url)
soup = BeautifulSoup(html.text, 'html.parser')
divs = soup.find_all('div', attrs={'id': 'listing'})

尝试2:

import requests
from lxml import html

page = requests.get(url)
root = html.fromstring(page.content)
tree = root.getroottree()
result = root.xpath('//div[@id="listing-9770909"]/div[2]/a')
for r in result:
    print(r)

这些都不会返回任何东西。我需要提取的是页面链接的URL。有任何想法吗?

python xpath web-scraping beautifulsoup lxml
1个回答
0
投票

要提取链接,首先必须确保页面源中存在链接的URL。为此,您可以使用页面源中的任何列表ID进行搜索(如果您使用的是谷歌浏览器,则可以使用ctrl + u,mozilla firefox)。如果页面源中存在URL,则可以使用列表页面的响应文本中的xpath直接抓取它们。这里Airbnb的上面列表页面没有页面源中的链接,因此页面可能正在向其他一些页面发送请求(通常是json请求)。您可以找到这些请求并向这些页面发送请求并获取所需数据。如果您对此有任何疑问,请发表评论。

© www.soinside.com 2019 - 2024. All rights reserved.