本文仅供学习交流,如有错误纰漏,还请谅解,欢迎大家一起来学习探讨!
参考资料(感谢!)
配角七三—如何抓取网页中的表格:
https://zhuanlan.zhihu.com/p/33986020
爬取准备
import requests
from bs4 import BeautifulSoup
import pandas as pd
import os
import time
import random
爬取思路
找到数据所在的网页,利用开发者工具,查看网页url,请求状态,源代码等等,然后定位数据元素。随后,进行编程。利用相关函数,模拟访问网页,采集数据,加以处理,并保存至本地。(细节之处不到位,还请见谅,博主还会再找时间另外总结)
模块1:网页表格数据爬取
def get_stock_table(stockcode,i):
url = 'http://vip.stock.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/' + str(
stockcode) + '.phtml?year=2019&jidu=' + str(i)
print(url)
res = requests.get(url)
res.encoding = 'gbk'
soup = BeautifulSoup(res.text, 'lxml')
tables = soup.find_all('table', {'id': 'FundHoldSharesTable'})
df_list = []
for table in tables:
df_list.append(pd.concat(pd.read_html(table.prettify())))
df = pd.concat(df_list)
df.columns = df.iloc[0]
headers = df.iloc[0]
df = pd.DataFrame(df.values[1:], columns=headers)
#print(len(df) - 1) #df中有几行数据
if (len(df) - 1 < 22):
c =len(df)-1
df = add_stock_table(stockcode,i,c,df)
else:
df =pd.DataFrame(df.values[1:22], columns=headers)
df = df.reset_index(drop=True)
df.to_excel('...\\'+str(stockcode) +'.xlsx')
sleeptime = random.