首页 > 解决方案 > beautifulsoup 仅返回某些网站的部分 url

问题描述

from bs4 import BeautifulSoup, SoupStrainer
    import requests

def get_url(url):
    page = requests.get(url.format()) 
    data = page.text
    soup = BeautifulSoup(data)
    
    for link in soup.find_all('a'):
        print(link.get('href'))
    

这是基本代码,当我请求时,

# get_url("https://www.marie-claire.es/moda")
get_url("http://spanish.xinhuanet.com/")

新华社回

在此处输入图像描述

完整的网址,

但另一个网站 在此处输入图像描述

不返回完整的超链接,

我不知道为什么我有这个问题以及如何解决它。有没有人有类似的问题?或者知道如何解决这个问题?

标签: urlweb-scrapingbeautifulsoup

解决方案


我怀疑你在这里寻找urljoin

from bs4 import BeautifulSoup, SoupStrainer
import requests
from urllib.parse import urljoin

def get_url(url):
    page = requests.get(url.format())
    data = page.text
    soup = BeautifulSoup(data)

    for link in soup.find_all('a'):
        print(urljoin(url, link.get('href')))

你也可以考虑

for link in set(soup.find_all('a')):

以避免结果中的重复。


推荐阅读