案例一:
task1: 爬取 新浪财经机构持股汇总 的数据。
机构持股汇总 - 数据中心 - 新浪财经
1、进入网站后根据年和季度可以查询的到数据,并且查看源代码中包含页面数据,那么直接请求即可
2、切换不同的”年“、”季度“和”页码“,观察调试界面的请求,可以发现reportdata为年,quarter为月,p为页码
3、参考代码:
import requests
from bs4 import BeautifulSoup
import csv
from time import sleep
for page in range(1, 2):
year = "2024"
k = "1"
url = f'https://vip.stock.finance.sina.***.***/q/go.php/v***StockHold/kind/jgcg/index.phtml'
param = {
"symbol": "%D6%A4%C8%AF%BC%F2%B3%C6%BB%F2%B4%FA%C2%EB",
"reportdate": year,
"quarter": k,
"p": page
}
dic = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36"
}
resp = requests.get(url, params=param, headers=dic)
resp.encoding = 'gbk'
# print(resp.text)
content = BeautifulSoup(resp.text, 'html.parser')
table = content.find('table', attrs={"id":"dataTable"})
# print(table)
f = open(f'./task1/task{year}{k}.csv', 'a', encoding='utf-8', newline="")
writer = csv.writer(f)
trs = table.find_all('tr')
for tr in trs:
tds = tr.find_all('td')
# print(tds)
# print(len(tds))
if len(tds) > 2:
writer.writerow([tds[0].text, tds[1].text, tds[2].text, tds[3].text, tds[4].text, tds[5].text, tds[6].text, tds[7].text])
f.close()
print(f"{year}{k}第{page}页数据写入完成")
sleep(3)
案例二:
task2: 爬取给定城市(北京、上海、广州、深圳)的空气质量数据。
全国空气质量指数查询 - PM2.5实时地图、空气污染排名 - 空气知音
1、以北京为例,如下图页面代码中包含了天气数据,只需要从返回的页面文件中提取天气数据即可。