爬虫(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数据结束

猜你喜欢

转载自blog.csdn.net/qq_53029299/article/details/114851722