Scraper fixes: - Roche: new fetch_phenom adapter (Phenom refineSearch). The old playwright scrape of ?locationsearch=Switzerland harvested recommendation-widget cards (Shanghai, Kyiv, Bogota) while the page reported no-results. 0 -> 88 CH-eligible roles. - Apple: dropped default_location "Switzerland", which relabelled US "Various Locations" postings as Swiss (84 phantom CH rows over 4 runs). Now honestly 0. - Meta: NOT broken — metacareers reports "1 Items" for Zurich. Comment added so it is not "fixed" again. New boards: - Amazon/AWS (fetch_amazon): 32 CH roles incl. a Zurich AWS FDE req and a Bern ProServe Cloud Architect. AWS is the evidenced cloud; claims.json forbids GCP. - Axpo (teamtailor via base_url + pagination): 461 roles, opens the energy lane. Locations read from schema.org jobLocation with ISO alpha-2 expanded, so Madrid/Milan/Warsaw roles are not marked Swiss. Telenor benefits too. Title filtering now has two explicit modes. Inclusion allowlists fail closed and hide unanticipated good-fit roles, so they are now used only where volume forces it (>~200 roles). Everything else uses the shared, board-agnostic NOISE_TITLE_EXCLUDE, which fails open and leaves the final call to the scorer and the reviewer. Palantir stays unfiltered per its existing documented rationale. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
22 lines
956 B
Python
22 lines
956 B
Python
import io
|
|
from playwright.sync_api import sync_playwright
|
|
out = io.open('_mt_out.txt', 'w', encoding='utf-8')
|
|
with sync_playwright() as p:
|
|
b = p.chromium.launch()
|
|
pg = b.new_page()
|
|
pg.goto('https://www.metacareers.com/jobs?offices[0]=Zurich%2C%20Switzerland',
|
|
wait_until='domcontentloaded', timeout=60000)
|
|
pg.wait_for_timeout(9000)
|
|
for _ in range(6):
|
|
pg.mouse.wheel(0, 5000); pg.wait_for_timeout(1200)
|
|
n = pg.locator("a[href*='/jobs/']").count()
|
|
n2 = pg.locator("a[href*='/profile/job_details/']").count()
|
|
out.write('a[/jobs/]=%d a[/profile/job_details/]=%d\n' % (n, n2))
|
|
for i in range(min(n, 30)):
|
|
el = pg.locator("a[href*='/jobs/']").nth(i)
|
|
out.write(' %s | %s\n' % ((el.inner_text() or '').replace('\n', ' / ')[:90],
|
|
(el.get_attribute('href') or '')[:60]))
|
|
out.write('---TEXT---\n' + pg.inner_text('body')[:900])
|
|
b.close()
|
|
out.close()
|