网页表格抓取(我正在学习Python,尝试创建一个抓取多个页面的函数 )
优采云 发布时间: 2022-04-19 21:11网页表格抓取(我正在学习Python,尝试创建一个抓取多个页面的函数
)
我正在学习 Python,我正在尝试创建一个函数来从几个不同的网页获取疫苗接种率的网络抓取表 - 我们的数据和世界的 github 存储库。当网络抓取单个表和将其保存到数据框。
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = "https://github.com/owid/covid-19-data/blob/master/public/data/vaccinations/country_data/Bangladesh.csv"
response = requests.get(url)
response
scraping_html_table_BD = BeautifulSoup(response.content, "lxml")
scraping_html_table_BD = scraping_html_table_BD.find_all("table", "js-csv-data csv-data js-file-line-container")
df = pd.read_html(str(scraping_html_table_BD))
BD_df = df[0]
但是,当我尝试创建一个抓取多个页面的函数时,我运气不佳。我一直在关注这个 网站 的教程、“使用一个脚本抓取多个页面”部分中的 3 以及第 4 和第 5 页上的 StackOverflow 问题。我首先尝试创建一个全局变量,但最终出现错误比如“递归错误:调用 Python 对象时超出了最大递归深度”。这是我管理过的最好的代码,因为它不会产生错误,但我还没有设法将输出保存到全局变量中。我真的很感谢你的帮助。
import pandas as pd
from bs4 import BeautifulSoup
import requests
link_list = ['/Bangladesh.csv',
'/Nepal.csv',
'/Mongolia.csv']
def get_info(page_url):
page = requests.get('https://github.com/owid/covid-19-data/tree/master/public/data/vaccinations/country_data' + page_url)
scape = BeautifulSoup(page.text, 'html.parser')
vaccination_rates = scape.find_all("table", "js-csv-data csv-data js-file-line-container")
result = {}
df = pd.read_html(str(vaccination_rates))
vaccination_rates = df[0]
df = pd.DataFrame(vaccination_rates)
print(df)
df.to_csv("testdata.csv", index=False)
for link in link_list:
get_info(link)
编辑:保存到 csv 文件时,我可以查看最终的网页迭代,但不能查看上一个链接中的数据。
new = pd.read_csv('testdata6.csv')
pd.set_option("display.max_rows", None, "display.max_columns", None)
new