PYTHON实战计划自建项目--爬取深交所数据(董监高持股变动情况)

心血来潮去爬了一下深交所的部分数据(http://www.szse.cn/main/disclosure/jgxxgk/djggfbd/

在爬的过程中发现,该网页跳转页码,但网址却一直不变,通过查看网页的post数据,发现有个控制页码的项

Paste_Image.png

只要修改该项的值再post给网页就能实现页码的跳转,在网上查找具体方法后,改写了代码,能实现爬取任意页码的数据了

我的代码

# -*- coding:utf-8 -*-
import urllib.request, urllib.parse
from bs4 import BeautifulSoup
import time

def get_info(start=1,end=1):
    info = {}  #储存目标数据
    url = 'http://www.szse.cn/main/disclosure/jgxxgk/djggfbd/' #目标链接
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36',
    }
    #爬取所选取页数区间数据,该网页跳转页码,网址不变
    # 通过分析,post的数据中'tab1PAGENUM'是用来控制页码的,通过改变该键的值,来实现页码跳转
    for i in range(start,end+1):
        post_data = urllib.parse.urlencode({'tab1PAGENUM': i}).encode(encoding='UTF8') #需post的数据
        #req = urllib.request.Request(url, headers=headers)
        res = urllib.request.urlopen(url, post_data)  #为data参数赋值
        time.sleep(2) #防止访问太频繁
        soup = BeautifulSoup(res, 'lxml')

        titles = soup.find_all('td', class_='cls-data-th') #标题行
        datas = soup.find_all('td', class_='cls-data-td')  #数据行
        num = int(len(datas) / len(titles))                #数据行数
    #将数据写入本地文件
        with open('/Users/zorro/Desktop/test1.txt', 'a') as fs:
            for j in range(num):
                for title, data in zip(titles, datas[12 * j:12 * (j + 1)]):
                    info[title.get_text()] = data.get_text()
                    s = str(info)
                fs.writelines(s)
                fs.writelines('\n')
            print('Done!')


get_info(1,100)   #爬取前一百页数据 

总结

1.爬取过程不是很难,该网页无需用到headers即可爬取;
2.遇到的问题是页码变动但网址不变动,只要找到控制页码变动的项,把该值post给网页就能实现了;
3.问题解决过程中,查找了很多资料,也学到了很多,攻克每一个新遇到的问题,就是对自己的一次肯定,能提高自信,也能提高学习兴趣。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 178,794评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,506评论 19 139
  • 我曾经用那时生命的全部付出,金钱!感情!我每天活的那么累,却一无所有,只为了让自己的爱人开心,幸福,也许她觉得不是...
    带着树木去旅行阅读 338评论 0 0
  • 日常中常见贵金属首饰中的科学 日常生活中一些爱美人士以及一些有一定经济基础的人士中,佩戴金属饰品或者珠宝较为常见,...
    w情有独钟z阅读 2,776评论 0 4
  • 从小到大,常常被朋友们说成是一个会讲故事的人(脸红),虽是谬赞,但也欣然接受,因为我的确喜欢把生活中遇到的小事添...
    庆庆通辽阅读 346评论 0 0

友情链接更多精彩内容