Quantcast
Channel: AFPy's Planet
Viewing all articles
Browse latest Browse all 3786

Selenium >> Anubis et cie

$
0
0

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 403

Dans 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.

Modern Problems Require Modern Solutions

Commentaires :voir le flux Atomouvrir dans le navigateur


Viewing all articles
Browse latest Browse all 3786

Trending Articles