python - Web Scraping 动态网页 Python
问题描述
我正在尝试抓取此页面。
我想要描述包含“人口”的所有链接,或者至少页面上的每个链接。
这是我当前的脚本:
output = ""
base_url = argv[1]
response = requests.get(base_url)
soup = bs4.BeautifulSoup(response.text, 'html.parser')
em_box = soup.find_all("", href=True)
for link in em_box:
if len(argv) > 2:
if re.match(argv[2].replace("?", "\xe9"),link.text):
output += urljoin(base_url, link.get("href")) + "\n"
else:
output += urljoin(base_url, link.get("href")) + "\n"
argv[1]
我的网址在哪里,是我argv[2]
要找的文字 -Populations
到目前为止,它适用于基本的 http 页面。对于这个,漂亮的汤似乎无法从 url 看到结果链接。例如,我看不到以下“汤”:https ://www.insee.fr/fr/statistiques/4265511
如果你能指出一些处理这些“动态”页面的技巧。
解决方案
该页面使用 JavaScript 加载数据。您可以使用requests
模块来模拟它。
例如:
import json
import requests
import urllib.parse
url = 'https://www.insee.fr/fr/statistiques?q=population+l%C3%A9gale&taille=10000&debut=00&theme=1&categorie=5'
url2 = 'https://www.insee.fr/fr/solr/consultation?q={q}'
document_url = 'https://www.insee.fr/fr/statistiques/{id}'
params = urllib.parse.parse_qs(urllib.parse.urlsplit(url).query)
json_payload = {"q": params['q'][0],"start":"00","sortFields":[{"field":"score","order":"desc"}],"filters":[{"field":"themeId","tag":"tagThemeId","values":params['theme']},{"field":"categorieId","tag":"tagCategorieId","values":params['categorie']},{"field":"rubrique","tag":"tagRubrique","values":["statistiques"]},{"field":"diffusion","values":[True]}],"rows":"10000","facetsQuery":[]}
data = requests.post(url2.format(q=params['q'][0]), json=json_payload).json()
# uncomment this to print all data:
# print(json.dumps(data, indent=4))
for document in data['documents']:
if 'populations' in document['titre'].lower():
print('{:<60} {}'.format(document['titre'], document_url.format(id=document['id'])))
印刷:
Populations légales 2017 https://www.insee.fr/fr/statistiques/4265511
Populations légales des départements en 2017 https://www.insee.fr/fr/statistiques/4265390
Populations légales des régions en 2017 https://www.insee.fr/fr/statistiques/4265384
Populations légales de Nouvelle-Calédonie en 2019 https://www.insee.fr/fr/statistiques/2122859
Populations légales 2015 https://www.insee.fr/fr/statistiques/3292701
Populations légales 2014 https://www.insee.fr/fr/statistiques/2525768
Populations légales 2016 https://www.insee.fr/fr/statistiques/3677855
Populations légales 2008 https://www.insee.fr/fr/statistiques/2127739
Populations légales des collectivités d'outre-mer en 2017 https://www.insee.fr/fr/statistiques/4265419
Téléchargement des fichiers par départements des populations légales en 2017 https://www.insee.fr/fr/statistiques/4265439
Téléchargement du fichier d'ensemble des populations légales en 2017 https://www.insee.fr/fr/statistiques/4265429
Populations légales de Mayotte en 2017 https://www.insee.fr/fr/statistiques/2120838
Les populations légales de Wallis et Futuna en 2018 https://www.insee.fr/fr/statistiques/2121453
Populations légales 2013 https://www.insee.fr/fr/statistiques/2119504
Téléchargement des fichiers des populations légales des collectivités d'outre-mer en 2017 https://www.insee.fr/fr/statistiques/4265451
Populations légales des circonscriptions législatives pour les élections de 2017 https://www.insee.fr/fr/statistiques/2508230
Populations légales 2012 https://www.insee.fr/fr/statistiques/2119686
Populations légales 2011 https://www.insee.fr/fr/statistiques/2119751
Les populations légales de Polynésie française en 2017 https://www.insee.fr/fr/statistiques/2122700
Populations légales 2010 https://www.insee.fr/fr/statistiques/2128804
Populations légales 2009 https://www.insee.fr/fr/statistiques/2119804
Populations légales 2007 https://www.insee.fr/fr/statistiques/2119897
Populations légales 2006 https://www.insee.fr/fr/statistiques/2119923
Populations légales des collectivités d'outre-mer en 2015 https://www.insee.fr/fr/statistiques/3545753
Téléchargement du fichier d'ensemble des populations légales en 2015 https://www.insee.fr/fr/statistiques/3545833
Téléchargement des fichiers des populations légales des collectivités d'outre-mer en 2015 https://www.insee.fr/fr/statistiques/3545835
Populations légales des villages des îles Wallis et Futuna en 2008 https://www.insee.fr/fr/statistiques/2121413
Populations légales des districts des îles Wallis et Futuna en 2008 https://www.insee.fr/fr/statistiques/2121094
Populations communales 2006 https://www.insee.fr/fr/statistiques/2130410
Populations communales 2006 en ZUS https://www.insee.fr/fr/statistiques/2130333
Populations communales 2006 en ZFU https://www.insee.fr/fr/statistiques/2130338
推荐阅读
- python - 为列表创建带有条目的 text_box - tkinter Python
- python - Kivy - 无法更改带有 id 的 .text
- html - Eclipse runAction 进入欢迎页面
- git - 使用 git 挂钩的服务器部署不起作用
- python - 从 ONS 开放地理门户自动获取最新版本的 Shapefile
- javascript - Carousel Cycle2:如何防止自动播放?
- java - 用 startActivity 调用的意图不会改变我的活动
- javascript - 发送 API 调用,观察一个特定的值,如果值发生变化,再次调用
- javascript - 如何为第三方 cookie 添加自定义 cookie 接受?
- visual-studio - 创建包含共享项目属性的 nuget - 自动引用