【问题标题】:Scrape HTML off AppBuilder page [closed]从 AppBuilder 页面中抓取 HTML [关闭]
【发布时间】:2019-02-26 07:38:16
【问题描述】:

我发现这个网站有一些我想分析的有趣数据。但是该页面真的很慢并且围绕 .docx 文件构建。但它具有 HTML 中每个文档的预览

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

我目前的策略想法是:

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

在抓取方面我还是个新手,之前在 Python 中使用 BeautifulSoup 时遇到了一些运气——页面没有加载。但是我最近一直在使用 nodejs,所以希望能够在带有一些 npm 包的 JS 中做到这一点。

谁能帮我找到适合这项工作的工具和一些关于最佳策略的指针/cmets?


奖金信息

通过解码左侧的过滤器链接之一:

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"}]}]}

不知道有没有用?

【问题讨论】:

  • 似乎有 7580 个结果,您想要所有这些链接吗?
  • @G_M 是的,请。

标签: javascript python web-scraping ecmascript-6


【解决方案1】:

所以希望能够在带有一些 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

【讨论】:

  • 哇!非常感谢!!!
猜你喜欢
  • 1970-01-01
  • 2018-03-20
  • 1970-01-01
  • 1970-01-01
  • 2012-11-24
  • 2015-04-05
  • 2013-06-18
  • 1970-01-01
相关资源
最近更新 更多