代码之家  ›  专栏  ›  技术社区  ›  Norfeldt

从AppBuilder页面中删除HTML[关闭]

  •  -3
  • Norfeldt  · 技术社区  · 8 年前

    我发现这个网站有一些有趣的数据,我想分析。但是这个页面非常慢,而且是围绕.docx文件构建的。但是它有一个HTML格式的每个文档的预览

    http://www.produktresume.dk/AppBuilder/search?page=0

    我目前的战略构想是:

    1. 深入研究 div class="widget_inside"
    2. 抓住所有的 href 在里面 <a class="preview_link"
    3. .json / .csv 供日后分析

    我是一个相当新的当谈到刮,和以前的一些运气 BeautifulSoup 在Python中-页面没有加载。但是我最近一直在使用nodejs,所以我更希望能够用JS和一些npm包来实现它。

    有谁能帮我找到适合这项工作的工具和一些关于最佳策略的建议/意见?


    奖金信息

    通过对左边的一个过滤器链接进行解码,出现以下情况:

    http://www.produktresume.dk/AppBuilder/search?expand_all=true&page=0&refinements_token={}&selected_tokens[]={"s":[{"id":"folder-refinement","xPath":"$folders","separator":"\u003e","logic":"OR","s":[{"n":"Human","k":"Human"}]}]}

    不知道那是否有用?

    1 回复  |  直到 8 年前
        1
  •  0
  •   G_M    8 年前

    我不知道你到底想如何保存这些预览链接中的信息,所以我把这部分留给你。修改这个脚本以下载所有这些脚本也很简单 .docx 文件,而不是仅仅抓住预览链接。

    import json
    
    from bs4 import BeautifulSoup
    from selenium import webdriver
    from selenium.common.exceptions import (
        NoSuchElementException,
        WebDriverException
    )
    
    base_url = 'http://www.produktresume.dk'
    
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--headless')
    driver = webdriver.Chrome(chrome_options=chrome_options)
    driver.get('{}/AppBuilder/search'.format(base_url))
    
    result = []
    while True:
        soup = BeautifulSoup(driver.page_source, 'lxml')
        preview_links = [base_url + link['href']
                         for link in soup.find_all('a', class_='preview_link')]
        result.extend(preview_links)
    
        try:
            element = driver.find_element_by_link_text('Næste')
            element.click()
        except (NoSuchElementException, WebDriverException):
            break
    
    driver.quit()
    
    with open('preview_links.json', 'w') as f:
        json.dump(result, f, indent=2)
    

    preview_links.json