Python 从该网站上抓取PDF

Python 从该网站上抓取PDF,python,pdf,web-scraping,Python,Pdf,Web Scraping,我正在尝试从以下网站使用python 2.7: 我想取消主要的一个,它有许多类别(事件),一个出现在2017年MotoGP比赛分类旁边的蓝色字母 在那之后的几年里。到目前为止,我已经: import re from bs4 import BeautifulSoup from urllib.request import urlopen url = "http://www.motogp.com/en/Results+Statistics/" r = urlopen(url).read() sou

我正在尝试从以下网站使用python 2.7:

我想取消主要的一个,它有许多类别(事件),一个出现在2017年MotoGP比赛分类旁边的蓝色字母

在那之后的几年里。到目前为止,我已经:

import re
from bs4 import BeautifulSoup
from urllib.request import urlopen
url = "http://www.motogp.com/en/Results+Statistics/"
r  = urlopen(url).read()
soup = BeautifulSoup(r)
type(soup)

match = re.search(b'\"(.*?\.pdf)\"', r)
pdf_url="http://resources.motogp.com/files/results/2017/ARG/MotoGP/RAC/Classification" + match.group(1).decode('utf8')
链接类型如下:

http://resources.motogp.com/files/results/2017/AME/MotoGP/RAC/Classification.pdf?v1_ef0b514c

所以我应该在角色后面加上“?”这个词。主要问题是如何从一个事件切换到另一个事件,以获取此类格式的所有链接。

根据您上面提供的描述,这是如何获取这些
pdf
链接的:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get("http://www.motogp.com/en/Results+Statistics/")

for item in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "#event option"))):
    item.click()
    elem = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "padleft5")))
    print(elem.get_attribute("href"))
    wait.until(EC.staleness_of(elem))

driver.quit()
部分输出:

http://resources.motogp.com/files/results/2017/VAL/MotoGP/RAC/worldstanding.pdf?v1_8dbea75c
http://resources.motogp.com/files/results/2017/QAT/MotoGP/RAC/Classification.pdf?v1_f6564614
http://resources.motogp.com/files/results/2017/ARG/MotoGP/RAC/Classification.pdf?v1_9107e18d
http://resources.motogp.com/files/results/2017/AME/MotoGP/RAC/Classification.pdf?v1_ef0b514c
http://resources.motogp.com/files/results/2017/SPA/MotoGP/RAC/Classification.pdf?v1_ba33b120

根据您在上面提供的描述,以下是如何获取这些
pdf
链接的方法:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get("http://www.motogp.com/en/Results+Statistics/")

for item in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "#event option"))):
    item.click()
    elem = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "padleft5")))
    print(elem.get_attribute("href"))
    wait.until(EC.staleness_of(elem))

driver.quit()
部分输出:

http://resources.motogp.com/files/results/2017/VAL/MotoGP/RAC/worldstanding.pdf?v1_8dbea75c
http://resources.motogp.com/files/results/2017/QAT/MotoGP/RAC/Classification.pdf?v1_f6564614
http://resources.motogp.com/files/results/2017/ARG/MotoGP/RAC/Classification.pdf?v1_9107e18d
http://resources.motogp.com/files/results/2017/AME/MotoGP/RAC/Classification.pdf?v1_ef0b514c
http://resources.motogp.com/files/results/2017/SPA/MotoGP/RAC/Classification.pdf?v1_ba33b120

如果我没有错的话,那么你唯一的目标就是让那些
pdf
链接连接到每个事件,对吗?如果是,您需要使用selenium或任何可以执行单击的浏览器模拟器,因为要使这些
pdf
链接可见,有必要启动对每个事件的单击?是的,我想获取链接。如果我没有错,那么您唯一的目标就是将这些
pdf
链接连接到每个事件,对吗?如果是,您需要使用selenium或任何可以执行单击的浏览器模拟器,因为要使这些
pdf
链接可见,有必要在每个事件上启动单击?是的,我想获得链接。如何为这些年添加循环?我正在尝试:
for year in wait.until(EC.presence\u of_all\u elements\u located((By.CSS\u SELECTOR,“#handle\u seasure span”):year.click()
您应该创建另一个描述当前需求的线程,并在此处放置指向该帖子的链接。我来看看。我现在正在做一个项目。谢谢。这是:。我怎样才能为这些年添加一个循环?我正在尝试:
for year in wait.until(EC.presence\u of_all\u elements\u located((By.CSS\u SELECTOR,“#handle\u seasure span”):year.click()
您应该创建另一个描述当前需求的线程,并在此处放置指向该帖子的链接。我来看看。我现在正在做一个项目。谢谢。给你。