当前位置:   article > 正文

python3 爬虫抓取股市数据_抓取新浪股票排行数据,许多页抓取不到

抓取新浪股票排行数据,许多页抓取不到

爬虫抓取数据的一般步骤

	1、确定需要抓取的网站
	2、分析url,找到url的的变化规律
	3、分析页面的数据
	4、获取页面数据
	5、提取需要爬取的数据
	6、写入数据库或写入文件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

代码

import requests
import random
import re

# 创建 User-Agent 池
UA_list = [{"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36"},
           {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0"},
           {"User-Agent":"Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.9.168 Version/11.50"}]


def get_url():
    '''拼接url'''
    try:
        shares_id = input("请输入股票代码:")
        year = input("请输入年份:")
        season = input("请输入季度:")
        url = "http://**********/trade/lsjysj_%s.html?year=%s&season=%s" % (shares_id, year, season)
    except:
        pass
    return url


def get_page(url):
    '''获取网页数据'''
    ua = random.choice(UA_list)  # 随机获取User-Agent,防止对方反爬
    response = requests.get(url, ua)
    if response.status_code == 200:
        return response.text
    return 0


def parse_page(html):
    '''分析网页数据'''
    regular = re.compile(r"<tr [\s\S]*?><td>([\s\S]*?)</td><td [\s\S]*?>([\s\S]*?)</td><td [\s\S]*?>([\s\S]*?)</td><td [\s\S]*?>([\s\S]*?)</td><td [\s\S]*?>([\s\S]*?)</td>")
    price_list = re.findall(regular, html)
    # 正则表达式获取需要的股票价格,包含当天开盘价,收盘价,最高价和最低价
    for price in price_list:
        print(price)
        

while True:
    url = get_url()
    page = get_page(url)
    if page:
        parse_page(page)
        break
    else:
        print("未找到相应股票,请重新输入")

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

运行结果

在这里插入图片描述

小结

此爬虫较为简单
1、不需要考虑登录的cookie的问题
2、没有ajax页面数据动态加载问题
3、未写入数据库或文件当中,通过终端打印的防止,直接展示出爬取的数据
4、一次只能爬取一只股票的其中一个季度的数据

注意事项

1、如果一次性爬取多条股票的价格,要注意反反爬策略,例如通过代理服务池或者连续爬取时增加程序的休眠时间
2、大量爬取数据时,可利用创建多进程的方式提高爬取效率

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/56665
推荐阅读
相关标签
  

闽ICP备14008679号