!pip install selenium
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.common.by import By
from time import sleep
from datetime import datetime
import pandas as pd
errors = []
season = []
for id in range(46605, 46985):
my_url = f'https://www.premierleague.com/match/{id}'
option = Options()
#option.headless = True
driver = webdriver.Chrome(options=option)
driver.get(my_url)
代码在这里运行正常。
date = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="mainContent"]/div/section/div[2]/section/div[1]/div/div[1]/div[1]'))).text
date = datetime.strptime(date, '%a %d %b %Y').strftime('%m/%d/%Y')
home_team = driver.find_element_by_xpath('//*[@id="mainContent"]/div/section/div[2]/section/div[3]/div/div/div[1]/div[1]/a[2]/span[1]').text
away_team = driver.find_element_by_xpath('//*[@id="mainContent"]/div/section/div[2]/section/div[3]/div/div/div[1]/div[3]/a[2]/span[1]').text
执行这些行时弹出错误。错误截图1
错误截图2
@Kaustav在回答时说,这是一个代码块,不知道如何把它放在评论部分。虽然我赞同@Joe的想法,但因为你想要一个精确的语法,我想我可以把一段代码放在一起展示给你。因此,这里的代码打开浏览器,获取详细信息(当您输入代码时),然后将其存储在列表中(用于显示此任务,但实际上可能不是必需的,这取决于您的要求)。
我要再次重申,打开、使用和关闭浏览器(即使是无头浏览器)进行如此多次的迭代,可能会在循环中的某个时间点影响性能,所有的时间都会被浪费。我强烈建议你找到本网站的API(如果有的话),并使用它成功。
话虽如此,下面是供您使用的代码。
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.common.by import By
from time import sleep
from datetime import datetime
import pandas as p
import time
errors = []
season = []
url_ls=[] # used to show to query creator a demo
for id in range(46605, 46985):
my_url = f'https://www.premierleague.com/match/{id}'
option = Options()
option.add_argument('--headless')
option.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=option)
driver.get(my_url)
title = driver.current_url
try:
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//*[text()='Accept All Cookies']"))).click()
except:
print("cookie modal not found")
continue
# time.sleep(10)
match_date = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='matchInfo']//div[contains(@class, 'matchDate')]"))).text
match_date_f = datetime.strptime(match_date, '%a %d %b %Y').strftime('%m/%d/%Y')
home_team = driver.find_element(By.XPATH, "//div[@class='team home']").text
away_team = driver.find_element(By.XPATH, "//div[@class='team away']").text
tup = (title + "|" + match_date + "|" + home_team + "|" + away_team)
url_ls.append(tup)
driver.close()
print(url_ls) # used to show to query creator a demo
这是输出(我只是附加了当前的url,以及这个代码中元素的文本,但是你可以进一步扩展这个块并添加你的元素——你可以像导入熊猫一样,将数据发送到数据框,然后发送到excel或csv——随你喜欢)
['https://www.premierleague.com/match/46605|Sat 10 Aug 2019|Liverpool|Norwich City', 'https://www.premierleague.com/match/46606|Sat 10 Aug 2019|AFC Bournemouth|Sheffield United', 'https://www.premierleague.com/match/46607|Sat 10 Aug 2019|Burnley|Southampton', 'https://www.premierleague.com/match/46608|Sat 10 Aug 2019|Crystal Palace|Everton', 'https://www.premierleague.com/match/46609|Sun 11 Aug 2019|Leicester City|Wolverhampton Wanderers']
Process finished with exit code 0
为什么不使用英超联赛网站使用的api?
import requests
fixture = 66553
headers = {
'accept':'*/*',
'accept-encoding':"gzip;q=1.0, identity; q=0.5",
'accept-language':'en-ZA,en;q=0.9,en-GB;q=0.8,en-US;q=0.7,de;q=0.6',
'content-type':'application/x-www-form-urlencoded; charset=UTF-8',
'origin':'https://www.premierleague.com',
'referer':'https://www.premierleague.com/',
'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'
}
url = f'https://footballapi.pulselive.com/football/broadcasting-schedule/fixtures/{fixture}'
data = requests.get(url,headers=headers).json()
print(data['fixture']['attendance'])
print(data['fixture']['kickoff']['label'])
print(data['fixture']['teams'])
url = f'https://footballapi.pulselive.com/football/fixtures/{fixture}/textstream/EN?pageSize=1000&sort=desc'
data = requests.get(url,headers=headers).json()
for message in data['events']['content']:
print(message['text'])
什么是抓取异常 Baiduspider无法正常抓取,就是抓取异常。 抓取异常对网站有哪些影响 对于大量内容无法正常抓取的网站,搜索引擎会认为网站存在用户体验上的缺陷,并降低对网站的评价,在抓取、索引、权重上都会受到一定程度的负面影响,最终影响到网站从百度获取的流量。 抓取异常的原因有哪些 一、网站异常 1、dns异常 当Baiduspider无法解析您网站的IP时,会出现DNS异常。可能是
初始化类时,我的实现代码如下。执行以下操作时发生错误。 请帮助初始化具有用户代理的 Web 驱动程序。我希望我能避免机器人自然刮擦。使用: “Mozilla/5.0 (视窗 NT 6.1;赢64;x64;rv:47.0) 壁虎/20100101火狐/47.0“ 作为代理
问题内容: 我正在寻找一种方法,可以根据用户在PHP中提供的URL对另一个页面进行小的预览。 我只想检索页面标题,图像(如网站徽标)以及一些文字或说明(如果有)。有没有任何外部库/类的简单方法?谢谢 到目前为止,我已经尝试过使用DOCDocument类,加载HTML并将其显示在屏幕上,但是我认为这不是正确的方法 问题答案: 我建议您考虑为此使用simple_html_dom。这将使其非常容易。 这
大家好,我正在使用selenium webdriver,在运行下面的脚本时,我在脚本中突出显示的位置遇到了陈旧元素异常错误。 我的脚本停在那里,我不能运行。 错误消息为-Stale元素异常错误。在缓存中找不到该元素,可能是页面在查找后发生了更改。 在这种情况下,请任何人帮助我,并指导我纠正这个错误。 你好Vignesh K S
直到昨天:以下代码工作正常。 但是今天早上它开始抛出:异常线程"main"org.openqa.selenium.SessionNotCreatedException:会话未创建异常 我在Stackoverflow中阅读了几个答案。我知道如果selenium web驱动程序和chrome驱动程序之间存在版本不匹配,就会引发此错误。所以我下载了最新的Selenium Web驱动程序(3.0.1 fo
问题内容: 我正在做一个项目,我需要做很多屏幕抓取工作,以尽可能快地获取大量数据。我想知道是否有人知道任何好的API或资源来帮助我。 顺便说一下,我正在使用Java。 到目前为止,这是我的工作流程: 连接到网站(使用来自Apache的HTTPComponents) 网站包含一个带有一堆我需要访问的链接的部分(使用内置的Java HTML解析器来弄清楚我需要访问的所有链接是什么,这很烦人且凌乱的代码