python爬取上市公司套期保值公告(巨潮网)--使用Selenium方法

python爬虫爬取上市公司套期保值公告(巨潮网)

摘要
巨潮资讯网的网页是通过JavaScript动态加载的,因此本文利用Selenium方法爬取该网站上市公司的套期保值公告。

主要技术路线:
1.css_selector/xpath法模拟浏览器/无界面模拟浏览器
2. 自动翻页获取源代码
3. 正则提取
4. 数据清洗
5. 保存到excel文件

一、模拟浏览器操作

xpath法模拟浏览器**

  1. fn+f12快捷键获取巨潮网网页源码
  2. 源码界面点击左上角箭头,再选中搜索框,获取搜索框对应源码位置
  3. 对应源码>鼠标右键>copy>copy xpath获取路径

fn+f12快捷键获取网页片描述
代码如下

from selenium import webdriver   #引用selenium库里的webdriver功能
browser = webdriver.Chrome()     #模拟谷歌的浏览器
browser.get("https://www.baidu.com/")  # 通过browser.get()函数访问网址
browser.find_element_by_xpath('//*[@id="kw"]').clear() #若搜索框有默认内容则清空默认文字
browser.find_element_by_xpath('//*[@id="kw"]').send_keys('python') #自动在搜索框输入内容
browser.find_element_by_xpath('//*[@id="su"]').click() # 点击百度一下按钮

除了使用xpath法模拟浏览器外,还可用css_selector法模拟浏览器

ps:由于爬取数量太大,Selenium方法爬取数据仅模拟人工操作完成,这样会不断重复跳出新页面,效率极大的降低了。如果追求效率可使用无界面模拟浏览器,它可以关闭浏览器和后台进程,不仅可以提高获取数据速度,也可以提高电脑的运行效率。代码如下:

“”"
无界面模拟浏览器
“”"
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(’–headless’)
browser = webdriver.Chrome(options=chrome_options)
browser.get(‘https://www.baidu.cn’)
data = browser.page_source
print(data)

2.自动翻页获取源代码

由于巨潮网是动态网址,点击第2页、第3页等进行翻页的时候,网页地址栏中的url也没变,因此本文采用selenium法模拟鼠标点击下一页实现自动翻页。

 browser.find_element_by_xpath('//*[@id="fulltext-search"]/div/div[1]/div[2]/div[4]/div[2]/div/button[2]/i').click()   # 点击下一页按钮           

一直点击下一页到最后一页时需要停止点击,跳出循环,需计算出总页数
计算总页数:
例:源代码中有显示总条数:共 50 条 当前显示1-10条
总页数=总条数/每页条数=50/10=5

 data = browser.page_source
 p_count = '</div> <span class="total-box" style="">共 (.*?) 条 当前显示.*?条</span></div>'
 count = re.findall(p_count, data)[0]   # 获取总条数  class ="total-box" style="" > 共 50条 当前显示1-10条 < / span >
 pages = int(int(count) / 10)  # 获取总页数
 if pages>100:
    pages=100
 else:
    pages=pages
    # print(data)

算出总页数之后用一个for循环点击下一页即可实现自动翻页
代码如下:

# 2.自动翻页获取源代码
    datas=
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值