如果数组包含任何作为 Python 中预期追加的子字符串的元素,如何不追加数组

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

我正在使用以下代码抓取网站链接以创建数组:

from bs4 import BeautifulSoup
import requests

URL = "https://www.sportsbet.com.au/horse-racing/australia-nz/flemington/race-2-7681724"
headers = {'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246"}

r = requests.get(url=URL, headers=headers)
datalinks = []

soup = BeautifulSoup(r.content, "html.parser")

for a in soup.find_all('a', href=True):

        if ("race" in a['href']):
                datalinks.append(a['href'])
                
print(datalinks)

它返回以下数组: ['/赛马/澳大利亚-NZ/弗莱明顿/race-1-7681723', '/赛马/澳大利亚-NZ/弗莱明顿/race-2-7681724', '/赛马/澳大利亚-NZ/弗莱明顿/race-3-7681725', '/horse-racing/australia-nz/flemington/race-4-7681726', '/horse-racing/australia-nz/flemington/race-5-7681727', '/horse-赛车/澳大利亚-新西兰/弗莱明顿/race-6-7681729', '/赛马/澳大利亚-NZ/弗莱明顿/race-7-7681730', '/赛马/澳大利亚-NZ/弗莱明顿/race-8- 7681731', '/赛马/澳大利亚-nz/弗莱明顿/race-9-7681732', '/赛马/澳大利亚-nz/弗莱明顿/race-10-7681733', '/赛马/澳大利亚-nz /flemington/race-4-7681726', '/horse-racing/australia-nz/flemington/race-4-7681726/same-race-multi', '/horse-racing/australia-nz/flemington/race-4 -7681726/异国情调']

数据链接[3]是:/horse-racing/australia-nz/flemington/race-4-7681726 所以我想排除将最后 3 个元素附加到数组中,因为数组中的一个元素已经作为最后 3 个元素的子字符串存在(数据链接 [3])。

我可以检查要附加的预期元素是否作为子字符串存在并且不包含它:

if ("race" in a['href'] and a['href'] not in datalinks):

但不知道如何排除是否有任何现有元素作为预期附录的子字符串存在。

如果有人可以提供帮助,将不胜感激。

python arrays append substring
1个回答
0
投票

您可以修改代码来检查当前元素的

href
是否包含
datalinks
中的任何现有元素。您可以通过使用循环迭代现有元素并检查每个元素是否是当前元素的
href
的子字符串来实现此目的。具体方法如下:

from bs4 import BeautifulSoup
import requests

URL = "https://www.sportsbet.com.au/horse-racing/australia-nz/flemington/race-2-7681724"
headers = {'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246"}

r = requests.get(url=URL, headers=headers)
datalinks = []

soup = BeautifulSoup(r.content, "html.parser")

for a in soup.find_all('a', href=True):
    if ("race" in a['href']):
        append_link = True
        for existing_link in datalinks:
            if existing_link in a['href']:
                append_link = False
                break
        if append_link:
            datalinks.append(a['href'])

print(datalinks)
© www.soinside.com 2019 - 2024. All rights reserved.