没有[href]的多层网站上的Python网络抓取

时间:2018-10-30 19:23:33

标签: python html web-scraping beautifulsoup

我正在寻找一种从学生住宿网站uniplaces:https://www.uniplaces.com/en/accommodation/berlin上抓取数据的方法。

最后,我想为每个属性抓取一些具体信息,例如卧室大小,室友数量,位置。为此,我将首先必须刮除所有属性链接,然后再刮除单个链接。

但是,即使在通过控制台并使用BeautifulSoup提取URL后,我也无法提取导致单独列出的URL。它们似乎没有作为[href]包含在内,并且我无法在html代码中标识任何其他格式的链接。

这是我使用的python代码,但也未返回任何内容:     从bs4导入BeautifulSoup     导入urllib.request

resp = urllib.request.urlopen("https://www.uniplaces.com/accommodation/lisbon")
soup = BeautifulSoup(resp, from_encoding=resp.info().get_param('charset'))

for link in soup.find_all('a', href=True):
    print(link['href'])

所以我的问题是:如果链接不包含http://格式或未引用为[href]:有什么方法可以提取列表网址?

非常感谢您对此提供的支持!

祝一切顺利, 汉娜

1 个答案:

答案 0 :(得分:0)

如果您查看“网络”标签,则会发现一些专门针对此网址的API调用:https://www.uniplaces.com/api/search/offers?city=PT-lisbon&limit=24&locale=en_GB&ne=38.79507211908374%2C-9.046124472314432&page=1&sw=38.68769060641113%2C-9.327992453271463

,它指定位置PT-里斯本以及最北(ne)和西南(sw)方向。从此文件中,您可以获取每个优惠的ID并将其附加到当前网址,还可以获取从网页中获取的所有信息(价格,说明等...)

例如:

System.out.println("I am " + getName());