2201_75458412 2023-11-15 08:34 采纳率: 100%
浏览 53
已结题

Python爬虫,爬取股票网页

深交所-股票列表: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项

  • 写回答

13条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-11-15 08:34
    关注

    引自强大而免费的微信小程序:皆我百晓生

    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。

    希望这些代码可以帮助到你,如果有任何问题,请随时问我。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(12条)

报告相同问题?

问题事件

  • 系统已结题 11月24日
  • 已采纳回答 11月16日
  • 创建了问题 11月15日