我在这个网站上找到了一些我想分析的有趣数据。但是页面确实很慢,并且围绕.docx文件构建。但是它具有HTML中每个文档的预览
http://www.produktresume.dk/AppBuilder/search?page=0
我当前的战略构想是:
div class="widget_inside"
href
中的所有<a class="preview_link"
.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"}]}]}
不知道这有什么用吗?
答案 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