Python爬取上证问董秘数据

目的

爬取上证e互动 (sseinfo.com)中的问董秘数据,如下图。
在这里插入图片描述

运行环境

操作系统:windows 10

浏览器:Chrome

Python版本:3.8

使用的第三方库:requestsjsontime

查看数据

首先我们先查看一家公司的数据,然后向下翻页,可以发现网页是自动加载数据的,边上的竖条一直都翻不到底。

在这里插入图片描述
在这里插入图片描述

抓包

OK,知道数据是动态加载的,那我们只需在检查模式下,让网页再加载一条数据就可以了。这个时候打开检查模式并切换到网络,数据框中应该是空的,因为我们并没有向服务器请求数据。如果有数据,那我们按清除即可。

清除数据后,再向下滑动页面,让网页加载数据。可得到数据接口网址(http://sns.sseinfo.com/ajax/userfeeds.do?typeCode=company&type=11&pageSize=10&uid=382&page=3)。

在这里插入图片描述
在这里插入图片描述

抓取一条数据

这次返回的数据不是json格式,所以我们需要使用一些解析工具,我使用的是BeautifulSoup,也是一个非常常见的爬虫工具,文档附在这边,需要的小伙伴可以自行查看。Beautiful Soup 4.2.0 文档。下边是写好的函数。

def pars_soup(soup):
    items = []
    m_feed_item_list = soup.find_all('div', 'm_feed_item')
    for m_feed_item in m_feed_item_list:
        temp = dict()

        id = m_feed_item.get('id')
        name = m_feed_item.find('p').text
        qa = m_feed_item.find_all('div', 'm_feed_txt')
        q = qa[0].text.strip()
        if len(qa) == 2:
            a = qa[1].text.strip()
        else:
            a = ''

        temp['id'] = id
        temp['name'] = name
        temp['question'] = q
        temp['answer'] = a
        items.append(temp)

    return items
url = 'http://sns.sseinfo.com/ajax/userfeeds.do?typeCode=company&type=11&pageSize=10&uid=382&page=3'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36 Edg/91.0.864.48',
}
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, features="html.parser")
print(pars_soup(soup))

# 输出
# [{'id': 'item-777592', 'name': '瓜农王老五', 'question': ':*ST广珠(600382)地产只有事故,白酒才有故事。(1)“健康养生公司”抵债,公司将成为第二个福星股份、南京高科。(2)“珍珠红酒业”抵债,公司将成为第二个大豪科技、舍得酒业。老头谏言:公司在《二次问询函回复公告》、《资产抵债问询函回复公告》内,向全体股民详细介绍一下“珍珠红酒业”的经营现状,以及美好的发展前景!谢谢!', 'answer': '瓜农王老五先生,您好,感谢您的建议,谢谢。'}, ...]

获取更多数据

观察网址可以发现,其中pageSize是指一次获取数据的数量,最大为100;uid为公司代码,似乎是股票代码后面几位;page为当前页码。由此我们可以构造一个网址生成器,不断的获取新数据。

# 主页获取的接口网址生成
def main_page_url(uid, size=10):
    page = 1
    while True:
        url = f'http://sns.sseinfo.com/ajax/userfeeds.do?typeCode=company&type=11&pageSize={size}&uid={uid}&page={page}'
        yield url
        page += 1

效果展示

最终数据使用tsv格式保存。
在这里插入图片描述

代码获取

本文完整代码可关注公众号<卡卡KSCN>,回复<上证问董秘爬虫>获取

本文首发于微信公众号<卡卡KSCN>,欢迎关注

公众号二维码

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您想了解如何用 Python 爬取历史天气数据,是吗? 首先,需要确定您想要爬取哪个地区的历史天气数据。一般来说,可以通过查询该地区的气象局或气象网站获取历史天气数据。 接着,可以使用 Python 中的 requests 库来发送 HTTP 请求,获取网页源代码。然后,可以使用 BeautifulSoup 库来解析网页源代码,提取出所需的天气数据。 以下是一个简单的示例代码,用于爬取中国天气网上北京市 2019 年 1 月份的历史天气数据: ``` python import requests from bs4 import BeautifulSoup url = 'http://www.weather.com.cn/weather/101010100.shtml#dt' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} r = requests.get(url, headers=headers) r.encoding = 'utf-8' soup = BeautifulSoup(r.text, 'html.parser') weather_list = soup.select('.t li') for weather in weather_list: date = weather.select('.time')[0].text weather_detail = weather.select('.temp')[0].text.strip() print(date, weather_detail) ``` 以上代码中,我们首先通过 requests 库发送了一个 GET 请求,获取了北京市天气网的网页源代码。然后,使用 BeautifulSoup 库解析网页源代码,提取出了 2019 年 1 月份的天气数据,并打印输出了日期和天气详情。 需要注意的是,不同的网站网页结构不同,需要根据具体情况修改代码。同时,需要注意网站的 robots.txt 文件,不要过度访网站,以免被封 IP 或其他限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值