目标:爬取华盛顿人口统计表格内容,并写入csv文件中。
问题:该表格为后期渲染得到,源代码中没有table元素。
解决方法:使用selenium模拟人工打开网页操作,等待渲染完毕后获取页面资源。
一、下载selenium
pip install selenium
二、根据不同的浏览器安装相应的驱动
首先查看chrome版本:
在下载网址中下载和当前版本接近的驱动,下面两个网址均可。
1.https://npm.taobao.org/mirrors/chromedriver/
2.http://chromedriver.storage.googleapis.com/index.html
解压后将exe文件放python安装目录下的Scripts文件夹里
三、开始写脚本,具体如下
from bs4 import BeautifulSoup
from selenium import webdriver
import csv
def write_population_csv(url):
browser = webdriver.Chrome()
browser.get(url)
html = browser.page_source
soup = BeautifulSoup(html,"lxml")
table = soup.find('table')