爬虫(5)爬取多页数据

我们点开其他年份的GDP数据时,会发现网站的变化只有后面的数字变成了相应的年份,所以我们可以通过for循环来实现对多页数据的爬取

from selenium import webdriver
from bs4 import BeautifulSoup
import csv

driver=webdriver.Chrome()
out=open('d:/gdp.csv','w',newline='')
csv_write=csv.writer(out,dialect='excel')
for year in range(1960,2020):
    url="https://www.kylc.com/stats/global/yearly/g_gdp/%d.html"%year
    xpath="/html/body/div[2]/div[1]/div[5]/div[1]/div/div/div/table"
    driver.get(url)
    tablel=driver.find_element_by_xpath(xpath).get_attribute('innerHTML')

    soup=BeautifulSoup(tablel,"html.parser")
    table=soup.find_all('tr')
    for row in table:
        cols=[col.text for col in row.find_all('td')]
        if len(cols)==0 or not cols[0].isdigit():
            continue
        cols.append(year)
        csv_write.writerow(cols)
out.close()
driver.close()

这里要先注意,打开文件只运行一遍,也就是要放到for循环外面,不然新数据会覆盖掉原数据
年份是从1960年到2019年,所以range参数到2020
同时url也需要更改,改为

url="https://www.kylc.com/stats/global/yearly/g_gdp/%d.html"%year

为了不混淆年份对应的GDP,可以在最后面加上一个年份

自此,爬取GDP数据结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值