深交所-股票列表:https://www.szse.cn/market/product/stock/list/index.html
1、爬取50家公司数据:从第36页开始爬取
1)、显示爬取起始序号、终点号、起始页面、终点页面
2)、爬取50家公司页面所有数据并显示(包含序号,以下数据都包含序号)
3)、50组数据存入数据库stock.db
4)、从数据库查询“A股总股本"最高的10家公司信息并显示
5)、从50组数据中获取'A股流通股本 最高公司的“A股简称并将超链接网址存入变量URL,
显示‘A股简称和超链接网址
2、爬取URL对应的网页,显示网页数据
6)、显示基本信息前5项
7).显示行情信息
8)、显示关键指标本日数值
9)、显示走期报告前5项
答案要求如下
1)、显示爬取起始序号、终点序号、起始页面、终点页面
2)、爬取50家公司页面所有数据并显示
3)、50组数据存入数据库stock.db
4)、从数据库查询A股总股本 最高的10家公司信息并显示
5)、从50组数据一天取A股流通股本最高公司的A股简次并将超链接网址存入交量URL,显示A股简称和超链接网址
6)显示基本信目前5项
Python爬虫,爬取股票网页
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
13条回答 默认 最新
关注引自强大而免费的微信小程序:皆我百晓生。
1. 爬取股票网页数据
首先,我们需要安装一些必要的库,如requests、BeautifulSoup和sqlite3。可以通过以下代码安装所需库:
!pip install requests !pip install beautifulsoup4然后,我们开始实现爬取股票网页数据的功能。
1.1 显示爬取起始序号、终点序号、起始页面、终点页面
我们需要定义起始序号、终点序号、起始页面和终点页面的变量,并打印出来。
start_page = 36 end_page = start_page + 49 print("爬取起始序号:", start_page) print("爬取终点序号:", end_page) print("起始页面:", start_page) print("终点页面:", end_page)1.2 爬取50家公司页面所有数据并显示
接下来,我们需要编写代码来爬取股票网页数据并显示。
import requests from bs4 import BeautifulSoup url = "https://www.szse.cn/market/product/stock/list/index.html" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36" } # 发送GET请求,获取网页内容 response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, "html.parser") # 解析网页内容,获取股票数据 stock_data = [] table = soup.find("table", class_="table-block") rows = table.find_all("tr")[1:] for row in rows: cells = row.find_all("td") data = [cell.get_text(strip=True) for cell in cells] stock_data.append(data) # 显示股票数据 for data in stock_data: print(data)1.3 50组数据存入数据库stock.db
我们使用sqlite3库来操作数据库,并将50组数据存入其中。
import sqlite3 # 连接到数据库 conn = sqlite3.connect("stock.db") cursor = conn.cursor() # 创建数据表 cursor.execute("CREATE TABLE IF NOT EXISTS stock_data (id INTEGER PRIMARY KEY, stock_code TEXT, stock_name TEXT, ...)") # 插入数据 for i, data in enumerate(stock_data): cursor.execute("INSERT INTO stock_data (id, stock_code, stock_name, ...) VALUES (?, ?, ..., ...)", (i+start_page,)+tuple(data)) # 提交更改并关闭数据库连接 conn.commit() conn.close()请注意,上述代码中的"..."表示省略的其他列名和列值。
1.4 从数据库查询A股总股本最高的10家公司信息并显示
我们可以执行SQL查询来获得A股总股本最高的10家公司的信息,并将结果打印出来。
import sqlite3 # 连接到数据库 conn = sqlite3.connect("stock.db") cursor = conn.cursor() # 查询A股总股本最高的10家公司信息 cursor.execute("SELECT stock_name, total_capital FROM stock_data ORDER BY total_capital DESC LIMIT 10") # 显示查询结果 result = cursor.fetchall() for row in result: print("公司名称:", row[0]) print("A股总股本:", row[1]) print() # 关闭数据库连接 conn.close()1.5 从50组数据中获取A股流通股本最高公司的A股简称并将超链接网址存入变量URL,并显示A股简称和超链接网址
我们可以遍历50组数据,查找A股流通股本最高的公司,并获取其A股简称和超链接网址。
import sqlite3 # 连接到数据库 conn = sqlite3.connect("stock.db") cursor = conn.cursor() # 查询A股流通股本最高的公司的A股简称和超链接网址 cursor.execute("SELECT stock_name, stock_code, link FROM stock_data ORDER BY circulating_capital DESC LIMIT 1") # 获取查询结果 result = cursor.fetchone() stock_name = result[0] stock_code = result[1] link = result[2] # 显示A股简称和超链接网址 print("A股简称:", stock_name) print("超链接网址:", link) # 关闭数据库连接 conn.close()2. 爬取URL对应的网页,显示网页数据
要实现此功能,我们需要编写一个函数来爬取URL对应的网页,并使用BeautifulSoup解析网页内容。
import requests from bs4 import BeautifulSoup def crawl_webpage(url): headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36" } # 发送GET请求,获取网页内容 response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, "html.parser") return soup # 调用crawl_webpage函数,并显示基本信息前5项 webpage_url = "...(网页URL)" webpage_soup = crawl_webpage(webpage_url) info_table = webpage_soup.find("table", class_="info-table") table_rows = info_table.find_all("tr") for row in table_rows[:5]: print(row.get_text(strip=True)) # 显示行情信息 market_info = webpage_soup.find("div", class_="market-info") print(market_info.get_text(strip=True)) # 显示关键指标本日数值 key_indicators = webpage_soup.find("div", class_="key-indicators") print(key_indicators.get_text(strip=True)) # 显示走期报告前5项 research_reports = webpage_soup.find("div", class_="research-reports") report_items = research_reports.find_all("div", class_="item") for item in report_items[:5]: print(item.get_text(strip=True))请注意,在上述代码中的"..."处,您需要替换为要爬取的具体网页的URL。
希望这些代码可以帮助到你,如果有任何问题,请随时问我。
本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报 编辑记录解决 1无用