目录
网页信息
打开东方财富网首页,切换至东方财富网 > 行情中心 > 沪深港通 > 沪股通/深股通切换至网站,主要包含当天的沪股和深股的实时情况,属于动态网页,使用scrapy配合selenium可以完成表格数据的爬取。
爬虫框架
stock_spider.py(爬虫文件)
import scrapy,time
from stock.items import StockItem
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver import ChromeOptions
class StockSpider(scrapy.Spider):
name = 'stock'
# 允许爬取的域名
allowed_domains = ['quote.eastmoney.com']
# 爬虫的起始网页
start_urls = ['http://quote.eastmoney.com/center/gridlist.html#sh_hk_board']
def __init__(self):
# 因为东方财富网行情表为相同网站下爬取不同页的数据
# 定义网站页码变量
self.page = 1
# 手动定义最大页码,暂时还没有编写从网页自行获取
self.max_page = 0
# 爬取网页的列表索引
self.index = 0
# 辅助判断沪股还是深股
self.name = ''
self.nm = ''
# 定义标签页的句柄
self.first_h = None
# 爬取网页列表
self.url_list = ["http://quote.eastmoney.com/center/gridlist.html#sh_hk_board",
"http://quote.eastmoney.com/center/gridlist.html#sz_hk_board"]
super(StockSpider, self).__init__(name='stock')
# 定义模拟浏览器的路径
chrome = '/home/zcreset/Scrapy/爬虫/chromedriver'
# 设置无头爬取模式,即后台运行,无界面显示
# chorme_options = ChromeOptions()
# chorme_options.add_argument("--headless")
# chorme_options.add_argument('--disable-gpu')
# self.driver = webdriver.Chrome(executable_path=chrome,chrome_options=chorme_options)
# 给爬虫设置Chrome浏览器
self.driver = webdriver.Chrome(executable_path=chrome)
def start_requests(self):
url = self.url_list[self.index]
self.name = url.split('#')[-1][:2]
self.driver.get(url)
# 获取当前标签页句柄
self.first_h = self.driver.current_window_handle
# 在当前标签页进行爬取请求
yield scrapy.Request(url, callback=self.parse, dont_filter= True)
# 定义如何存百度的单个页面中提取信息的方法
def parse(self, response):
# 调用字段函数创建数据存储字典
# 暂时手动是手动记录最大页码
Item = StockItem()
# 判断股票归属地
if self.name == 'sh':
self.max_page