新西兰人口结构(种族,教育,离婚率,寿命,工资结构,拥有车辆数目,房子数目,)
lxml
lxml是python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高。
XPath,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言,它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索。
XPath的选择功能十分强大,它提供了非常简明的路径选择表达式,另外,它还提供了超过100个内建函数,用于字符串、数值、时间的匹配以及节点、序列的处理等,几乎所有我们想要定位的节点,都可以用XPath来选择。
Requests module
https://zhuanlan.zhihu.com/p/146913886
可以很好的拿到文档的信息,
但是处理里面的内容,功能有限
Beautiful Soup
可以很好的拿到整个文档,有很多 api 去拿到节点,
但是,
没有 event 时间,比如不能模仿点击事件
然后就想安 selenium
换在本地电脑上,
电脑上发现
pip
没法安装东西,,,,,就开始了各种幺蛾子🦋
这个命名查看 pip 情况
python3 -m ensurepip
``
又遇到 问题!@!!🤮
以为是 chrome app 的权限,一直在想着怎么修改。。
🤔
终于能下载了!!!
# import requests
# from bs4 import BeautifulSoup
import os
import time
import selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
url = 'https://databank.worldbank.org/reports.aspx?source=2&country=CAN#'
# res = requests.get(url)
# print(soup.find('td', {'customid':"R1"}).get_text())
# print('1990: '+soup.find('td', {'customid':"R1C1"}).get_text())
# os.chmod('/Applications/Google Chrome.app', 0o755)
browser = webdriver.Chrome(executable_path ="/Applications/chromedriver")
browser.get(url)
# downloadButton = soup.find('a', {'title':"Download CSV Format"})
# res = WebDriverWait(browser,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"a[title='Download CSV Format']"))).click()
# browser.implicitly_wait(5) 这样更好
time.sleep(10)
# button = browser.find_element_by_css_selector("a[title='Download CSV Format']")
# button = browser.find_element(By.CSS_SELECTOR, "a[title='Download CSV Format']")
download_options_button = browser.find_element(By.XPATH, "//*[@id='upReportLinks']/div/ul/li[5]/a")
# 要把下拉菜单点下才行
download_options_button.click()
# Message: element not interactable 不等待 3秒 报错
time.sleep(3)
downloadCSVbutton = browser.find_element(By.XPATH, "//*[@id='liCSVDownload']/a")
downloadCSVbutton.click()