1

假设我们有这个 swarm url “ https://www.swarmapp.com/c/dZxqzKerUMc ”,我们如何在上面的链接中获取 Apple Williamsburg 超链接下的 url。

我试图根据 html 标签将其过滤掉,但是标签很多,并且有很多foursquare.com 链接。下面是上面给定链接的源代码的一部分

<h1><strong>Kristin Brooks</strong> at <a 
href="https://foursquare.com/v/apple-williamsburg/57915fa838fab553338ff7cb" 
target="_blank">Apple Williamsburg</a></h1>

代码中的 urlfoursquare 并不总是相同的,那么为每个给定的 Swarm url 唯一地获取特定 url 的最佳方法是什么。

我试过这个:

import bs4
import requests

def get_4square_url(link):
    response = requests.get(link)
    soup = bs4.BeautifulSoup(response.text, "html.parser")
    link = [a.attrs.get('href') for a in 
soup.select('a[href=https://foursquare.com/v/*]')]
    return link

print (get_4square_url('https://www.swarmapp.com/c/dZxqzKerUMc'))
4

1 回答 1

0

我使用https://foursquare.com/v/作为获取所需网址的模式

def get_4square_url(link):
    try:
        response = requests.get(link)
        soup = bs4.BeautifulSoup(response.text, "html.parser")
        for elem in soup.find_all('a', 
href=re.compile('https://foursquare\.com/v/')): #here is my pattern
            link = elem['href']
        return link
    except requests.exceptions.HTTPError or 
requests.exceptions.ConnectionError or requests.exceptions.ConnectTimeout \
            or urllib3.exceptions.MaxRetryError:
        pass
于 2017-09-22T09:33:33.757 回答