Vous faites chier avec vos trucs genre Anubis qui cassent mes petits scrapers python :(
Là, je voulais gentiment scraper les missions sur le Fandom de Cyberpunk 2077 pour pouvoir faire mon arbre de mission.
Et pouf, on se fait rembarrer parce qu'on utilise pas un vrai navigateur :
$ curl -v https://cyberpunk.fandom.com/wiki/Cyberpunk_2077_Main_Jobs
> Host: cyberpunk.fandom.com
> User-Agent: curl/8.18.0
> Accept: */*
>< HTTP/2 403Dans ces cas là, pas le choix, Selenium WebDriver.
WebDriver est lib multilangage pour contrôler un navigateur web tel que firefox ou chrome.
Minimal Viable Product®
#!/usr/bin/env python3frompathlibimportPathfromseleniumimportwebdriverfromselenium.webdriver.common.byimportBydefmain():output_dir=Path("html")output_dir.mkdir(exist_ok=True)driver=webdriver.Firefox()driver.get("https://cyberpunk.fandom.com/wiki/Cyberpunk_2077_Main_Jobs")links=[(link.get_attribute("title"),link.get_attribute("href"))forlinkindriver.find_elements(By.CSS_SELECTOR,".navbox li a")]forlink_title,link_hrefinlinks:page_file=output_dir/f"{link_title}.html"ifpage_file.exists():print(f"{link_title} already exists, skipping")continueprint(f"Saving {link_title} from {link_href}")driver.get(link_href)content_node=driver.find_element(By.CSS_SELECTOR,".mw-parser-output")page_file.write_text(content_node.get_attribute("outerHTML"))driver.quit()if__name__=="__main__":main()j'trouve ça moins élégant que Hishel. Mais bon.

Commentaires :voir le flux Atomouvrir dans le navigateur