爬取上交所信息

      当遇到JS渲染时,很难找到正确的url,上交所就是一个比较典型的例子。在doc和xhr也没找到入口,最后在js中找到。成功以后即可进行后面数据爬取和分析。数据可视化部分下周抽时间写,最近在公司写Java爬虫,做信贷方面大数据分析,对爬虫归类和识别正确的入口很重要,其次就是总页数下一页,解析页(自己写来玩就没必要了)。这样做的目的可以在框架下产生大量爬虫,在加上批处理,很吓人。

 

找到对应js后,查看请求头里面的url,

 

# -*- coding: utf-8 -*-
"""


@author: yyl
"""

import requests
from urllib.parse import quote
import time
from random import sample,choice

  
    
headers = {
    'User-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36',
    'Referer': 'http://www.sse.com.cn/assortment/stock/list/share/'
}

#请求页面
def requests_one_page(url,parmas):
    try:
        
        r = requests.get(url, headers=headers)
        print(r.text)
    except:
        print("error")
        
       



def main():
   

    url = "http://query.sse.com.cn/security/stock/getStockListData2.do?&jsonCallBack=jsonpCallback59522&isPagination=true&stockCode=&csrcCode=&areaName=&stockType=1&pageHelp.cacheSize=1&pageHelp.beginPage=1&pageHelp.pageSize=25&pageHelp.pageNo=1&_=1564755528542"
    

    parmas = {'callback': 'fetchJSON_comment98vv402',
          'productId': '100003671742', 
          'score': '0',
          'sortType': '5',
          'page': '0', 
          'pageSize': '10',
          'isShadowSku': '0',
          'fold': '1',

          'jsonCallBack': 'jsonpCallback59522',
               'isPagination':'true',
               'pageHelp.cacheSize': '1',
               'pageHelp.beginPage': '1',
               'pageHelp.pageSize': '25',
               'pageHelp.pageNo': '1',
               '_': '1564755528542'
              }

    requests_one_page(url,parmas)
   

if  __name__=="__main__":
    #main()
    s=time.time()
    main()
    e=time.time()
    print("完成!!时间为:{}".format(e-s))

 

在Python中,我们可以使用`requests`库来发送HTTP请求获取网页内容,然后利用`BeautifulSoup`库解析HTML文档,抓取上海证券交易所(MD&A,即管理层讨论与分析)的部分。最后,通过`pandas`库将数据存储到DataFrame中方便后续处理。 以下是简单的步骤: 1. **安装所需库**: 首先需要安装`requests`, `beautifulsoup4`, 和 `pandas`库,如果还没有安装,可以使用下面的命令: ```bash pip install requests beautifulsoup4 pandas ``` 2. **发送请求并解析HTML**: ```python import requests from bs4 import BeautifulSoup # 确定URL url = "http://www.sse.com.cn/disclosure/listedinfo/annual_report/index.shtml" # 发送GET请求 response = requests.get(url) if response.status_code == 200: soup = BeautifulSoup(response.text, 'lxml') # 使用lxml解析器 else: print("请求失败:", response.status_code) # 根据网站结构找到MD&A部分 mda_area = soup.find('div', class_='mda_content') # 这里假设MD&A在一个特定class中,实际可能需要调整 ``` 3. **提取数据**: 从解析后的HTML中提取你需要的数据,这通常涉及到选择器的选择和数据清洗工作。例如,你可以使用`.find_all()`查找所有相关段落或者使用CSS选择器选取目标元素: ```python paragraphs = mda_area.find_all('p') data = [p.text for p in paragraphs] # 提取每个段落的内容 ``` 4. **保存到pandas DataFrame**: ```python import pandas as pd df = pd.DataFrame(data, columns=['MD&A']) # 创建DataFrame,列名可根据实际情况调整 df.to_csv('sh_se_mda.csv', index=False) # 将DataFrame保存为CSV文件 ``` **注意事项**: - 上海证券交易所的网页结构可能会经常变化,所以以上代码可能需要根据实际页面布局进行调整。 - 数据抓取过程中可能遇到反爬虫策略,比如验证码、IP限制等,可能需要使用代理IP或设置User-Agent等。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值