从给定的网页中收集* ALL *链接,然后按词组

时间:2018-09-24 14:07:56

标签: python html selenium beautifulsoup

我是python语言的新手。如标题中所述,我正在尝试从此网页获取所有链接:

尝试使用以下页面上的python脚本查找所有链接:https://web.archive.org/web/ * / http://bankier.pl/

我最感兴趣的链接包含在这样的部分

年-月-星期-天

在年/月/周/日的所有链接(或某个范围内)中查找特定短语的最佳选择,或者至少是下载链接并在本地“ grep”它的最佳选择。

到目前为止,我已经尝试使用beautifulSoup和硒,但是从来没有接近收集到我最感兴趣的东西。 似乎这些链接位于“较低级别”,而我的脚本无法收集它们。

非常感谢您的帮助。

这是我的尝试:

#############################
######bs4 script#############
#############################

import requests
from bs4 import BeautifulSoup

url = 'https://web.archive.org/web/*/http://bankier.pl/'

r = requests.get(url)
html_content = r.text
soup = BeautifulSoup(html_content, 'lxml')  
links = [a.get('href') for a in soup.find_all('a', href=True)]
print(links)

这:

#############################
######selenium script########
#############################

from selenium import webdriver
driver = webdriver.Chrome('/home/grzegorz/Documents/Techniczne/Skrypty/Python/Vulture/niewywalac/chromedriver')
driver.get('https://web.archive.org/web/*/http://bankier.pl/')
links = driver.find_elements_by_xpath('.//span[@class="file"]/a')
len(links)
for link in links:
    link.get_attribute('href')

...但是这些都不打印我需要的链接(因此http://www.bankier.pl网页是从特定日期开始的。)

3 个答案:

答案 0 :(得分:0)

您可以使用下面用Java编写的代码来获取各自的输出。

driver.get("https://web.archive.org/web/*/http://bankier.pl/");

        List<String> url = new ArrayList<String>();

        List<WebElement> link = driver.findElements(By.cssSelector(".month-week .month-day div div[class='captures'] a"));

        for(WebElement Url : link) {

            url.add(Url.getAttribute("href"));

        }

         *system.out.println(url.size())*   // get total link
          Iterator itr=url.iterator();  
          while(itr.hasNext()){  
           System.out.println(itr.next());  
          }  

答案 1 :(得分:0)

  

...但是这些都不打印出我需要的链接

您正在这样做:

for link in links:
    link.get_attribute('href')

作为脚本运行时将不会显示任何内容。

您的意思是这样的吗?:

for link in links:
    href = link.get_attribute('href')
    print(href)

答案 2 :(得分:0)

不幸的是,现在,当您将鼠标悬停一天时,我看不到一种获取所提供网址的方法,但是这样做至少可以从每个可用的报废日期中获取第一个网址:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait 

driver = webdriver.Chrome()
url = 'https://web.archive.org/web/*/http://bankier.pl/'

driver.get(url)

WebDriverWait(driver, 20).until(
 EC.presence_of_element_located((By.XPATH, """//*[@id="wb-calendar"]
""")))


captures = driver.find_elements_by_xpath("""//*[@id="wb- 
    calendar"]/div/div/div/div/div/div/div/a
 """)

for capture in captures:
    print capture.get_attribute("href")

driver.quit()

让我知道是否有帮助。 祝你好运!