from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from time import sleep
from datetime import datetime
import pandas as pd
import warnings
import os
os.chdir('C:/Users/paulc/Documents/Medium Football')
warnings.filterwarnings('ignore')
base_url = 'https://www.sportingindex.com/spread-betting/football/international-world-cup'
option = Options()
option.headless = False
driver = webdriver.Chrome("C:/Users/paulc/Documents/Medium Football/chromedriver.exe",options=option)
driver.get(base_url)
links = [elem.get_attribute("href") for elem in driver.find_elements(By.TAG_NAME,"a")]
此代码检索此页面上的所有href链接。我希望搜索链接列表并仅返回包含“https://www.sportingindex.com/spread-betting/football/international-world-cup/group_a”的匹配项
但是我得到了AttributeError:'NoneType'对象没有使用的'startswith'属性
import re
[x for x in links if x.startswith('https://www.sportingindex.com/spread-betting/football/international-world-cup/group_a')]
请帮忙。
2条答案
按热度按时间wydwbb8l1#
与其收集页面上的所有
a
元素,还不如使用更精确的定位器,因为这样会产生很多不相关的结果。所以,与其
使用此选项:
这将仅给予您所需的元素。
还有这个
将直接给予你想要的链接。
UPD
如果这是一个空的列表,你可能错过了一个延迟,所以,你可以简单地在这一行之前添加一些暂停,比如
time.sleep(2)
,但是最好使用WebDriverWait
expected_conditions
显式等待。我不能检查它,因为我的电脑是阻止该链接由于我的公司政策,因为这是一个赌博网站,但通常这样的东西应该工作:
rryofs0p2#
下面的代码用于过滤以获取正确的链接
输出: