从AppBuilder页面上删除HTML

时间:2018-09-21 21:50:35

标签: javascript python web-scraping ecmascript-6

我在这个网站上找到了一些我想分析的有趣数据。但是页面确实很慢,并且围绕.docx文件构建。但是它具有HTML中每个文档的预览

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

我当前的战略构想是:

  1. 等待页面加载(之前没有尝试过)
  2. 挖入div class="widget_inside"
  3. 抓取href中的所有<a class="preview_link"
  4. 遍历所有收集的链接,并将HTML解析为一些.json / .csv供以后分析

关于抓取,我还很陌生,以前在Python中使用BeautifulSoup有点运气-页面没有加载。但是我最近一直在使用nodejs,因此希望能够使用一些npm软件包在JS中进行操作。

有人能帮助我找到适合该工作的工具以及有关最佳策略的一些建议/意见吗?


奖金信息

通过解码左侧的过滤器链接之一,就会出现:

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 个答案:

答案 0 :(得分:0)

  

因此希望能够使用某些npm软件包在JS中完成

尽管我使用Python,但此答案显示了一种非常简单且同步(缓慢!)的方式来获取所有这些预览链接。浏览全部757页花了大约1个小时15分钟。

我不确定您要在每个预览链接中保存信息的确切程度,因此我将这一部分留给了您。修改此脚本以仅下载所有这些.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