爬虫入门(使用selenium)—— 附实操案例微博爬虫
厦门大学 WISERCLUB
2024.11
爬虫入门(使用selenium)
Selenium介绍
1. 什么是Selenium
- Selenium最初是一个自动化测试工具,Selenium可以驱动浏览器自动执行自定义好的逻辑代码,即通过代码完全模拟使用浏览器自动访问目标站点并操作,所以也可以用来爬虫。就好比有一个人坐在电脑前快速浏览网页读取数据。
- 相比于其他爬虫工具的优势:- 可以模拟用户操作,避免一般的反爬虫方法- 可以执行JavaScript,得到动态网页中的数据
2. 如何安装Selenium
打开cmd或Anacoda Prompt,输入:
pip install selenium
安装后尝试能否导入Selenium(能够运行即为安装成功)
from selenium import webdriver
- 除了安装selenium本身,还需要安装对应的浏览器驱动,可以使用webdriver-manager库自动查看浏览器版本并下载对应的驱动程序。打开cmd或Anacoda Prompt,输入:
pip install webdriver-manager
- 使用webdriver_manager中的ChromeDriverManager安装ChromeDriver(按下面代码的步骤操作即可)
#导入selenium和webdriver_managerfrom selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
# 使用 ChromeDriverManager 安装 ChromeDriver,并返回驱动程序的路径
driver_path = ChromeDriverManager().install()# 打印驱动程序的路径(验证是否成功下载对应驱动)print(driver_path)# 创建 ChromeDriver 服务,并指定驱动程序的路径
service = Service(driver_path)#可以将Chrome替换为Edge、Firefox或Safari,下载其他浏览器的驱动
- 尝试能否使用驱动程序和selenium库打开网页
# 创建 Chrome WebDriver,并指定服务
browser = webdriver.Chrome(service=service)# 打开百度网页
browser.get("https://www.baidu.com")
- 如果自动安装不成功,可以尝试手动安装(版本尽量一模一样,否则可能出错,可以在浏览器的设置中查看自己的浏览器版本)- Google浏览器驱动:https://sites.google.com/a/chromium.org/chromedriver/downloads- Edge浏览器:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/- 火狐Firefox浏览器:https://github.com/mozilla/geckodriver/releases- Safari 浏览器:https://webkit.org/blog/6900/webdriver-support-in-safari-10/
- 如果是手动安装,记得要把下载好的驱动放到python安装路径的scripts目录中,如果是用的Anacoda装的python,放在Anacoda文件夹中即可。
3. Selenium基本操作
访问浏览器页面
- 可以使用get方法请求网页,向其参数传入要请求网页的URL即可
- page_source 指令可以打印当前页面的html源代码
# 创建 Chrome WebDriver,并指定服务
browser = webdriver.Chrome(service=service)#获取淘宝的网页
browser.get('https://www.taobao.com')#page_source指令打印该网页的html源代码print(driver.page_source)
- 运行结果如下:
<html lang="zh-CN" class="ks-webkit537 ks-webkit ks-chrome122 ks-chrome"><head><script charset="utf-8" src="https://g.alicdn.com/tbhome/??taobao-2021/0.0.37/common/head/item-bar.jst.html-min.js,taobao-2021/0.0.37/common/head/item.jst.html-min.js" async=""></script><script charset="utf-8" src="https://g.alicdn.com/tbhome/??taobao-2021/0.0.37/common/head/index-min.js,taobao-2021/0.0.37/c/shop/item.jst.html-min.js,taobao-2021/0.0.37/c/live/item.jst.html-min.js,taobao-2021/0.0.37/c/hotsale/item.jst.html-min.js,taobao-2021/0.0.37/c/hotsale/config-min.js,taobao-2021/0.0.37/c/helper/item.jst.html-min.js,taobao-2021/0.0.37/c/goods/item.jst.html-min.js,taobao-2021/0.0.37/c/qiang/item.jst.html-min.js,taobao-2021/0.0.37/common/pipe/index-min.js,taobao-2021/0.0.37/c/fashion/item.jst.html-min.js" async=""></script><script charset="utf-8" src="https://g.alicdn.com/tbhome/??taobao-2021/0.0.37/common/inject-min.js,taobao-2021/0.0.37/c/shop/index-min.js,taobao-2021/0.0.37/c/sale/index-min.js,taobao-2021/0.0.37/c/live/index-min.js,taobao-2021/0.0.37/c/hotsale/index-min.js,taobao-2021/0.0.37/c/helper/index-min.js,taobao-2021/0.0.37/c/goods/index-min.js,taobao-2021/0.0.37/c/qiang/index-min.js,taobao-2021/0.0.37/c/fashion/index-min.js" async=""></script><script charset="utf-8" src="https://g.alicdn.com/tbhome/??taobao-2021/0.0.37/lib/lazy-min.js" async=""></script><script src="https://textlink.simba.taobao.com/?name=tbhs&cna&nn=&count=13&pid=430266_1006&_ksTS=1711245240035_70&callback=jsonp71" async=""></script>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=10,chrome=1">
<meta name="renderer" content="webkit">
<title>淘宝</title>
<meta name="spm-id" content="a21bo">
<meta name="description" content="淘宝网 - 亚洲较大的网上交易平台,提供各类服饰、美容、家居、数码、话费/点卡充值… 数亿优质商品,同时提供担保交易(先收货后付款)等安全交易保障服务,并由商家提供退货承诺、破损补寄等消费者保障服务,让你安心享受网上购物乐趣!">
<meta name="aplus-xplug" content="NONE">
<meta name="keyword" content="淘宝,掏宝,网上购物,C2C,在线交易,交易市场,网上交易,交易市场,网上买,网上卖,购物网站,团购,网上贸易,安全购物,电子商务,放心买,供应,买卖信息,网店,一口价,拍卖,网上开店,网络购物,打折,免费开店,网购,频道,店铺">
<meta name="msvalidate.01" content="6E0390D0C5FFD883392E1B1E070FE901">
<link rel="dns-prefetch" href="//g.alicdn.com">
.........(还有很多内容省略掉了)
定位元素
- Selenium使用 browser.find_element(By.属性 , ‘属性名称’) 的语法来定位元素,或者是 browser.find_element(“属性”, ‘属性名称’)
- 这里要注意,网上很多教程给出的是老版本的语法(4.0版本之前).find_element_by_id,目前新版本已经不可用
- 下面给出最基本的五种定位方法
#从淘宝界面提取搜索框的节点# ID 定位: 使用元素的 ID 属性来定位元素。
input_by_id = browser.find_element("id",'q')print(input_by_id)#等价于 browser.find_element(By.ID, 'q')# Name 定位: 使用元素的 Name 属性来定位元素。
input_by_name = browser.find_element("name",'q')print(input_by_name)#等价于 browser.find_element(By.NAME, 'q')# Class Name 定位: 使用元素的 Class 属性来定位元素。
input_by_class = browser.find_element("class name",'search-suggest-combobox')print(input_by_class)#等价于 browser.find_element(By.CLASS_NAME, 'search-suggest-combobox')# CSS 选择器定位:使用CSS selector定位,可以理解为另一套查找规则,具体规则可以查看 https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Selectors
input_by_cssselector = browser.find_element("css selector",'#q')#此处#q等价于用id查找print(input_by_cssselector)#等价于 browser.find_element(By.CSS_SELECTOR, '#q')# XPath 定位: 使用 XPath 表达式来定位元素。语法请见上期课件,或 https://www.runoob.com/xpath/xpath-syntax.html
input_by_xpath = browser.find_element("xpath",'//*[@id="q"]')print(input_by_xpath)#等价于 browser.find_element(By.XPATH, '//*[@id="q"]')
- 运行结果如下:
<selenium.webdriver.remote.webelement.WebElement (session="b25faf1e4a6d084c61ce42c98dba5ed7", element="f.83DA36E53487B5F97380791F6C6FE601.d.1A59F384579EFD019ABCC99EDFC6956C.e.18")>
<selenium.webdriver.remote.webelement.WebElement (session="b25faf1e4a6d084c61ce42c98dba5ed7", element="f.83DA36E53487B5F97380791F6C6FE601.d.1A59F384579EFD019ABCC99EDFC6956C.e.18")>
<selenium.webdriver.remote.webelement.WebElement (session="b25faf1e4a6d084c61ce42c98dba5ed7", element="f.83DA36E53487B5F97380791F6C6FE601.d.1A59F384579EFD019ABCC99EDFC6956C.e.52")>
<selenium.webdriver.remote.webelement.WebElement (session="b25faf1e4a6d084c61ce42c98dba5ed7", element="f.83DA36E53487B5F97380791F6C6FE601.d.1A59F384579EFD019ABCC99EDFC6956C.e.18")>
<selenium.webdriver.remote.webelement.WebElement (session="b25faf1e4a6d084c61ce42c98dba5ed7", element="f.83DA36E53487B5F97380791F6C6FE601.d.1A59F384579EFD019ABCC99EDFC6956C.e.18")>
- 除了查找单个节点,selenium还可以通过将 browser.find_element() 改为 browser.find_elements() 实现查找页面中所有具有该属性的元素
#查找所有 class 为 mytao-content 的元素
input_by_class_content = browser.find_elements("class name",'mytao-content')print(input_by_class_content)#看一下一共有多少个class 为 mytao-content 的元素print(len(input_by_class_content))
- 运行结果如下:
[<selenium.webdriver.remote.webelement.WebElement (session="cd978c374ae525587075765fb1d7a20b", element="f.023A9385245A8227FED9AC9F00EFD556.d.B13117618656DDA4066D3B8213C03053.e.15")>, <selenium.webdriver.remote.webelement.WebElement (session="cd978c374ae525587075765fb1d7a20b", element="f.023A9385245A8227FED9AC9F00EFD556.d.B13117618656DDA4066D3B8213C03053.e.16")>, <selenium.webdriver.remote.webelement.WebElement (session="cd978c374ae525587075765fb1d7a20b", element="f.023A9385245A8227FED9AC9F00EFD556.d.B13117618656DDA4066D3B8213C03053.e.17")>, <selenium.webdriver.remote.webelement.WebElement (session="cd978c374ae525587075765fb1d7a20b", element="f.023A9385245A8227FED9AC9F00EFD556.d.B13117618656DDA4066D3B8213C03053.e.18")>]
4
交互操作
- 三种基本的交互动作:输入、清除、点击
#输入文本: 使用 send_keys() 方法向输入框输入文本。#向搜索框中输入文本‘华为’
input_by_id.send_keys("华为")#清除输入框: 使用 clear() 方法清除输入框中的文本。#清除搜索框中的全部内容
input_by_id.clear()# 点击: 使用 click() 方法来点击元素。#通过id查找搜索框,输入华为,点击搜索
search_button = browser.find_element("class name",'btn-search')
input_by_id.send_keys("华为")
search_button.click()#目前淘宝可以通过登录界面阻止selenium,需要支付宝手动登录后再进行其他操作
动作API
- 更多复杂的交互功能,可以模拟鼠标、键盘的高级操作
- 例如鼠标单击双击、拖拽、键盘组合键输出
- 详细内容推荐这位作者的文章:https://zhuanlan.zhihu.com/p/572134119
- 使用click可实现单击鼠标左键,使用context_click可实现点击鼠标右键,使用double_click可实现双击鼠标左键
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
# 创建 Chrome WebDriver,并指定服务
browser = webdriver.Chrome(service=service)
browser.get('http://sahitest.com/demo/clicks.htm')
click_btn = browser.find_element("xpath",'//input[@value="click me"]')#用于单击的按钮
doubleclick_btn = browser.find_element("xpath",'//input[@value="dbl click me"]')#用于双击的按钮
rightclick_btn = browser.find_element("xpath",'//input[@value="right click me"]')#用于右键单击的按钮#单击按钮
action = ActionChains(browser)
action.click(click_btn).perform()print(browser.find_element("name",'t2').get_attribute('value'))#双击按钮
action = ActionChains(browser)
action.double_click(doubleclick_btn).perform()print(browser.find_element("name",'t2').get_attribute('value'))#右键单击按钮
action = ActionChains(browser)
action.context_click(rightclick_btn).perform()print(browser.find_element("name",'t2').get_attribute('value'))
- 运行结果如下:
[CLICK]
[CLICK][DOUBLE_CLICK]
[CLICK][DOUBLE_CLICK][RIGHT_CLICK]
- 使用move_to_element可实现移动至某个具体的元素,使用move_to_element_with_offset可实现移动至距离某一具体元素多少距离的位置
- 一般很少用位置关系来移动鼠标,测量元素位置可以参考这篇文章:http://jingyan.baidu.com/article/eb9f7b6d87e2ae869264e847.html
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
# 创建 Chrome WebDriver,并指定服务
browser = webdriver.Chrome(service=service)
browser.get('http://sahitest.com/demo/mouseover.htm')
write = browser.find_element("xpath",'//input[@value="Write on hover"]')#鼠标移动到此元素,在下面的input框中会显示“Mouse moved”
blank = browser.find_element("xpath",'//input[@value="Blank on hover"]')#鼠标移动到此元素,会清空下面input框中的内容
result = browser.find_element("name",'t1')#input框
action = ActionChains(browser)
action.move_to_element(write).perform()#鼠标移动至write按钮print(result.get_attribute('value'))
action.move_to_element(blank).perform()#鼠标移动至blank按钮print(result.get_attribute('value'))
action.move_to_element_with_offset(blank,0,-40).perform()#鼠标移动到距离blank元素(10,-40)的点,可移动到write上print(result.get_attribute('value'))from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
# 创建 Chrome WebDriver,并指定服务
browser = webdriver.Chrome(service=service)
browser.get('http://sahitest.com/demo/dragDropMooTools.htm')
- 使用drag_and_drop即可拖拽到某个元素然后松开;等效命令包括:1)先进行click_and_hold,然后再release至特定位置;2)先进行先进行click_and_hold,然后通过move_to_element移动至指定位置,最后release
- 拖拽使用时注意加等待时间,有时会因为速度太快而失败
dragger = browser.find_element("id",'dragger')#被拖拽元素
item1 = browser.find_element("xpath",'//div[text()="Item 1"]')#目标元素1
item2 = browser.find_element("xpath",'//div[text()="Item 2"]')#目标元素2
item3 = browser.find_element("xpath",'//div[text()="Item 3"]')#目标元素3
item4 = browser.find_element("xpath",'//div[text()="Item 4"]')#目标元素4#方法1:直接使用drag_and_drop
action = ActionChains(browser)
action.drag_and_drop(dragger, item1).perform()#移动dragger到目标1
sleep(2)#方法2:使用click_and_hold,随后release
action = ActionChains(browser)
action.click_and_hold(dragger).release(item2).perform()#效果与上句相同,也能起到移动效果
sleep(2)#方法3:使用click_and_hold,然后move_to_element,最后release
action = ActionChains(browser)
action.click_and_hold(dragger).move_to_element(item3).release().perform()#效果与上两句相同,也能起到移动的效果
sleep(2)#方法4:使用drag_and_drop_by_offset,拖动至指定元素位置
action = ActionChains(browser)
action.drag_and_drop_by_offset(dragger,400,150).perform()#移动到指定坐标
sleep(2)
实例—微博爬虫(由于反爬虫机制,可能无法正常运行)
- 这个例子中,我们希望登录新浪微博,搜索关键词‘证监会新主席’,搜集第一页的所有新闻并提取每个新闻中前20条评论。
- 导入必要的库
#导入selenium库import selenium
#导入webdriver_manager库from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
#导入延时功能库import time
from selenium.webdriver.support.wait import WebDriverWait
#导入pandas库import pandas as pd
- 登录新浪微博
#打开模拟交互框,手动登录新浪微博from webdriver_manager.chrome import ChromeDriverManager
# 使用 ChromeDriverManager 安装 ChromeDriver,并返回驱动程序的路径
driver_path = ChromeDriverManager().install()# 打印驱动程序的路径print(driver_path)# 创建 ChromeDriver 服务,并指定驱动程序的路径
service = Service(driver_path)print('准备登陆Weibo.cn网站...')# 创建 Chrome WebDriver,并指定服务
browser = webdriver.Chrome(service=service)# 发送请求
browser.get("https://login.sina.com.cn/signup/signin.php")#暂停40秒进行预登陆,此处填写账号密码及验证
time.sleep(40)
- 运行结果如下:
C:\Users\14113\.wdm\drivers\chromedriver\win64\122.0.6261.128\chromedriver.exe
准备登陆Weibo.cn网站...
- 定位搜索框位置并输入感兴趣的关键词
#使用selector去定位关键词搜索框
search_input = browser.find_element("id",'search_input')#向搜索框中传入字段
search_input.send_keys("证监会新主席")#定位搜索键
search_button = browser.find_element("id",'search_submit')#点击
search_button.click()#当完成上步的代码运行后,会弹出新的窗口,从个人主页跳到微博搜索页。
browser.switch_to.window(browser.window_handles[1])
- 搜集新闻标题
comment =[]
username =[]#抓取节点:每个评论为一个节点(包括用户信息、评论、日期等信息),如果一页有20条评论,那么nodes的长度就为20
nodes = browser.find_elements("css selector",'div.card > div.card-feed > div.content')#对每个节点进行循环操作for i inrange(0,len(nodes),1):#判断每个节点是否有“展开全文”的链接
fold =Falsetry:
nodes[i].find_element("css selector","p>a[action-type='fl_unfold']").is_displayed()
fold =Trueexcept:
fold =False#如果该节点具有“展开全文”的链接,且该链接中的文字是“展开c”,那么点击这个要素,并获取指定位置的文本;否则直接获取文本#(两个条件需要同时满足,因为该selector不仅标识了展开全文,还标识了其他元素,没有做到唯一定位)if(fold and nodes[i].find_element("css selector","p>a[action-type='fl_unfold']").text.startswith('展开c')):
nodes[i].find_element("css selector","p>a[action-type='fl_unfold']").click()
comment.append(nodes[i].find_element("css selector",'p[node-type="feed_list_content_full"]').text)else:
comment.append(nodes[i].find_element("css selector",'p[node-type="feed_list_content"]').text)
username.append(nodes[i].find_element("css selector","div.info>div:nth-child(2)>a").text)# 打印结果print(comment)print(username)
- 运行结果如下:
['财联社新消息!\n这届证监会主席,是最务实的!\n一切以人民为中心!\n给证监会新主席点个赞', '我还是个“菜鸟”,证监会主席吴清记者会时这样说!\n新主席说自己进入现在的工作还没有“满月”还是一个“菜鸟”,现在主要是学习并和我的同事在各方面一起收集各种信息,并说保护中小投资者的利益是自己最重要的工作,并且没有之一!\n总结下来这次答记者会如下:\n1.上市公司融资要控制,上市数量要控制,严把IPO入口关,把各种造假公司挡在门外,要成倍大幅增加检查。\n2.投资者是市场之本,要想方设法保护散户,因为是弱者所以会有相关制度以保证,比如做空和T+0等。\n3.我现在还在收集各种信息,改革还在后面。\n4.对上市公司要全链条监管,规范减持,特别是转融通违规现象,要严厉打击!\n5.鼓励分红,长期不分红的公司要采取措施,比如限制减持,ST等,鼓励年前分红!\n6.退市力度要加大,严重违规就退市!\n\nA股继续涨涨涨,大涨,不信点个关注验证我的准确预判。 收起d', '新主席吴清亮相主持 证监会两天连开12场座谈会 透露哪些监管重点? O新主席吴清亮相主持 证监会两天连开12场座谈会 透露哪些监管重点?', '【#20条金句看证监会主席吴清答记者提问#,最新定调监管工作】#2024两会看点#今日,证监会新主席吴清亮相两会记者会,这是他今年2月履新以来首次在公开场合回答记者提问。他就资本市场、证券监管工作做了系列回应。经财联社记者梳理,有20个金句值得关注:\n\n1.投资和融资是一体两面,不可分割。投融资平衡发展进入良性循环,资本市场才能良性发展。\n2.监管者要特别关注公平问题,要把公开公平公正作为最重要的市场原则。需要进一步完善二级市场量化交易如何趋利避害,突出公平性。\n3.要吸引更多投资者特别是长期资金参与这个市场。能够坚持这种价值投资、理性投资、长期投资的理念,这是要努力推进的一件事情。\n4.在这样一个中小投资者占绝大多数的市场里,保护投资者特别是中小投资者合法权益,是证监会工作的核心任务,没有之一。\n5.监管工作重点为“两强两严”,强就是要强本强基,投资者是市场之本,严就是严监严管,依法从严监管市场,依纪从严管理队伍。要严打造假欺诈,严打操纵市场,严打内幕交易。\n6.要看到,市场运行有其自身规律,正常情况下不应干预。但是,当市场严重脱离基本面,出现非理性剧烈震荡、流动性枯竭、市场恐慌、信心严重缺失等极端情形时,该出手就果断出手,纠正市场失灵。将健全完善相关的机制,来坚决防范发生系统性的风险发生。\n7.把各项基础制度不断地进行完善,扎实推进要增强制度的适应性,以及相对的稳定性、可预期性。\n8.要认真地对标对表针对股票市场、债券市场、期货和衍生品市场等各领域各个环节各个主体,要全面地检视并加快补齐监管存在的一些短板弱项。\n9.将瞪大眼睛对问题机构问题企业,强化早期纠正,对各类风险及早处置,对各种违规行为露头就打,对重点领域重大的违法行为要重点地严打。\n10.严把入口,企业的IPO上市,绝对不能以圈钱作为目的,更不能允许造假欺诈上市,所以注册审核的各个环节都要依法依规,严之又严来督促发行人能够真实准确完整地来披露它的信息,要全力把造假者要挡在资本市场的门口门外。\n11.下一步要成倍地大幅地增加现场检查的这种覆盖面,对发现的违法违规的线索进一步加大查处的力度,申报就要担责。\n12.#技术性离婚等减持漏洞将进一步堵住#对一些技术性的离婚,融券卖出,转融通等等这样一些绕道违规减持的要进一步堵塞相关的制度漏洞对大股东实控人违规违法减持的要严厉依法打击。\n13.要聚焦提高上市公司质量,让企业更好发挥主体作用,提升投资价值。\n14.对多年不分红或分红比例偏低的公司,还将区分不同情况采取一定措施,包括限制股东减持、ST风险警示等,还将推动有条件的公司不止一年分一次红,鼓励一年多次,特别是鼓励春节前分红,让大家好好过年。\n15.进一步加大退市的力度,并付诸行动,一方面要设置更加严格的强制退市的标准,做到应退尽退,另一方面也完善吸收合并等各种政策,来进一步拓宽多元退出的渠道,也鼓励推动一些公司能够主动地退市。\n16.将与行业主管部门以及相关的宏观部门一起,更要包括这些股东单位、地方政府等等方面来协同发力,共同推进,让企业能够做优做强,营造更好的环境。\n17.投资者是市场之本,上市公司是市场之基,投资者和上市公司都是资本市场发展的源头活水,必须真诚善待投资者,更好地服务投资者,从法律、制度、监管、执法等方面进一步加强对投资者的保护。\n18.在队伍管理上也将刀刃向内,严抓严管,真正在政治上、作风上、廉洁上都过得硬,来打造一支监管铁军。\n19.包括发行上市并购重组,股权激励等等这些制度,也都需要与时俱进,要进一步地适应新质生产力发展的需要做制度调整完善。\n20.压实责任,监管部门、行业主管部门、地方政府还有一些中介服务机构,专业中介机构也都要各负其责,责无旁贷。证券公司、基金公司、期货公司,投资管理机构、会计师、律师服务机构,评估评级机构等进一步地回归本源,勤勉尽责,能够把功能性放在首位,不断地提升专业性服务的水准。(财联社) 收起d', '证监会新主席说他上午接到临时通知,下午就飞北京赴任了。其上任后,除了5000亿以上的国家队资金已经进入(含4100亿可计算的公开资金),还有1.正在筹备发行的十多只中证A50指数基金,目前每只规模预估20亿。2.中人寿和新华保险的500亿保险资金。3.中信金融资产分别委托中信证券、中信建投两家设立了资产管理计划开展投资,合计规模800亿。4.外资于3月15日调高A股权重系数一倍。基于此,你将如何操作A股的后市?(投票) 问题如上,欢迎投票 收起d', '证监会:要严打造假欺诈、操纵市场、内幕交易\n\n3月6日,证监会主席吴清表示,监管工作重点为“两强两严”,强就是要强本强基,投资者是市场之本,严就是严监严管,依法从严监管市场,依纪从严管理队伍。要严打造假欺诈,严打操纵市场,严打内幕交易。新主席上台后,有一个明显的趋势就是,更注重法治建设,这才是打蛇打七寸,我们资本市场最核心的问题一直是违法成本太低,导致一些上市公司或其他机构对法律没有敬畏之心,将违法的罚款当成一笔投入,只要ROI够高,就敢肆意践踏法律,侵害中小股东的权益。希望新主席在任上能够从根本上扭转这种局面。 收起d', '重磅!证监会新主席上任后开出的首张欺诈发行罚单\n\n2月9日,证监会开出了一张具有特殊的罚单,欺诈发行的罚单,这也是吴清主席上任后开出的首张罚单,而且这个罚单还是有点的含金量的。\n\n什么情况呢?\n\n上海思尔芯技术股份有限公司申请在科创板上市,听这个名字,就知道是一家做芯片的公司,但是在提交了申报材料后,经过核查发现,这家公司准备欺诈上市发行,这次的工作人员很是认真,在为注册前就把其扼杀了,避免了投资者的损失。\n\n针对上海思尔芯技术股份有限公司的欺诈发行做出了严惩。证监会依法决定:\n\n对思尔芯处以400万元罚款;\n\n对时任思尔芯董事长黄学良,时任思尔芯董事、首席执行官、总经理Toshio Nakama分别处以300万元罚款,合计600万。\n\n对时任思尔芯董事、资深副总裁林铠鹏,时任思尔芯董事、资深副总裁、董事会秘书熊世坤分别处以200万元罚款,合计400万\n\n对时任思尔芯首席财务官黎雄应处以150万元罚款;\n\n对时任思尔芯监事会主席杨录处以100万元罚款。\n\n这场欺诈发行扼杀在摇篮里,合计罚款1650万。\n\n这也是新《证券法》实施以来,查办的首例欺诈发行案件。\n\n这对没有在IPO前被这样严惩很不错,但是还不够,还要做出规定多少年不能上市,以及保荐机构没有做出相应的处罚,还是有利益在牵扯,保荐机构(券商)大多数都是国企。\n\n中国股市,只要抛开一切利益纠葛,把上市公司质量做好,A股何愁没有牛市,有了牛市,大家都有钱的,IPO也能加快的,你上的多,退的多,自然就没有人去怨恨市场只进不出的。\n\n大家说是不是。\n\n很多人都是为了点蝇头小利,看不得中国投资者在股市挣钱,用它们的话说,散户不亏钱,我们赚什么钱,这就是格局。 收起d', '证监会新主席吳清迎难而上,面对前任留下的800多家待上市公司,他并未退缩。他坚决表示,这些公司不容许有任何一家撤销申请,并将逐一进行严格审查,对造假行为给予重罚。吳清的改革举措得到了全国2亿股民的坚定支持,他们相信他能够带领证监会走向更加健康、透明的未来。在吳清主席的带领下,中国的股市将迎来更加美好的明天。 收起d', '【#20条金句看证监会主席吴清答记者提问#,最新定调监管工作】\n今日,证监会新主席吴清亮相两会记者会,这是他今年2月履新以来首次在公开场合回答记者提问。他就资本市场、证券监管工作做了系列回应。#有20个金句值得关注:\n\n1.投资和融资是一体两面,不可分割。投融资平衡发展进入良性循环,资本市场才能良性发展。\n2.监管者要特别关注公平问题,要把公开公平公正作为最重要的市场原则。需要进一步完善二级市场量化交易如何趋利避害,突出公平性。\n3.要吸引更多投资者特别是长期资金参与这个市场。能够坚持这种价值投资、理性投资、长期投资的理念,这是要努力推进的一件事情。\n4.在这样一个中小投资者占绝大多数的市场里,保护投资者特别是中小投资者合法权益,是证监会工作的核心任务,没有之一。\n5.监管工作重点为“两强两严”,强就是要强本强基,投资者是市场之本,严就是严监严管,依法从严监管市场,依纪从严管理队伍。要严打造假欺诈,严打操纵市场,严打内幕交易。\n6.要看到,市场运行有其自身规律,正常情况下不应干预。但是,当市场严重脱离基本面,出现非理性剧烈震荡、流动性枯竭、市场恐慌、信心严重缺失等极端情形时,该出手就果断出手,纠正市场失灵。将健全完善相关的机制,来坚决防范发生系统性的风险发生。\n7.把各项基础制度不断地进行完善,扎实推进要增强制度的适应性,以及相对的稳定性、可预期性。\n8.要认真地对标对表针对股票市场、债券市场、期货和衍生品市场等各领域各个环节各个主体,要全面地检视并加快补齐监管存在的一些短板弱项。\n9.将瞪大眼睛对问题机构问题企业,强化早期纠正,对各类风险及早处置,对各种违规行为露头就打,对重点领域重大的违法行为要重点地严打。\n10.严把入口,企业的IPO上市,绝对不能以圈钱作为目的,更不能允许造假欺诈上市,所以注册审核的各个环节都要依法依规,严之又严来督促发行人能够真实准确完整地来披露它的信息,要全力把造假者要挡在资本市场的门口门外。\n11.下一步要成倍地大幅地增加现场检查的这种覆盖面,对发现的违法违规的线索进一步加大查处的力度,申报就要担责。\n12.#技术性离婚等减持漏洞将进一步堵住#对一些技术性的离婚,融券卖出,转融通等等这样一些绕道违规减持的要进一步堵塞相关的制度漏洞对大股东实控人违规违法减持的要严厉依法打击。\n13.要聚焦提高上市公司质量,让企业更好发挥主体作用,提升投资价值。\n14.对多年不分红或分红比例偏低的公司,还将区分不同情况采取一定措施,包括限制股东减持、ST风险警示等,还将推动有条件的公司不止一年分一次红,鼓励一年多次,特别是鼓励春节前分红,让大家好好过年。\n15.进一步加大退市的力度,并付诸行动,一方面要设置更加严格的强制退市的标准,做到应退尽退,另一方面也完善吸收合并等各种政策,来进一步拓宽多元退出的渠道,也鼓励推动一些公司能够主动地退市。\n16.将与行业主管部门以及相关的宏观部门一起,更要包括这些股东单位、地方政府等等方面来协同发力,共同推进,让企业能够做优做强,营造更好的环境。\n17.投资者是市场之本,上市公司是市场之基,投资者和上市公司都是资本市场发展的源头活水,必须真诚善待投资者,更好地服务投资者,从法律、制度、监管、执法等方面进一步加强对投资者的保护。\n18.在队伍管理上也将刀刃向内,严抓严管,真正在政治上、作风上、廉洁上都过得硬,来打造一支监管铁军。\n19.包括发行上市并购重组,股权激励等等这些制度,也都需要与时俱进,要进一步地适应新质生产力发展的需要做制度调整完善。\n20.压实责任,监管部门、行业主管部门、地方政府还有一些中介服务机构,专业中介机构也都要各负其责,责无旁贷。证券公司、基金公司、期货公司,投资管理机构、会计师、律师服务机构,评估评级机构等进一步地回归本源,勤勉尽责,能够把功能性放在首位,不断地提升专业性服务的水准。(财联社)#网络名人赞两会# 转! 收起d', '证监会新主席说他上午接到临时通知,下午就飞北京赴任了。其上任后,除了5000亿以上的国家队资金已经进入(含4100亿可计算的公开资金),还有1.正在筹备发行的十多只 中证A50 指数基金,目前每只规模预估20亿。2.中人寿和 新华保险 的500亿保险资金。3.中信金融资产分别委托 中信证...\n来自 智汇Ai产业交流平台 的讨论O证监会新主席说他上午接到临时通知,下午就飞北京赴任了。其上任后,除了5000亿以上的国家队资金已经进入(含4100亿可计... O证监会新主席说他上午接到临时通知,下午就飞北京赴任了。其上任后,除了5000亿以上的国家队资金已经进入(含4100亿可计... 收起d', '看到新主席的上任,我不禁有点好奇回去复盘了一下易主席上任的时候媒体是怎么写的,结果发现老工行人易主席在任期间也创造了多个第一,这篇介绍和他领导的证监会最后一次表功会如出一辙。#证监会新任主席一度被称券商医生#', '对照新主席吴清上任前后证监会的两场会议,以及在上证所的工作。目前大致可以判断新一届班子的工作方向,1是新股发行数量应该有所控制,毕竟过去四年注册发行了接近2000只上市公司,现在整个市场也都看到了,这些注册上市的公司很多逐渐沦落成垃圾公司,成了圈钱套现的骗局;2是有可能要思考怎么进一步优化存量了,退市常态化不太会开倒车了,对于基本没有主营也没有现金的企业未来基本都会退市,所谓的支持并购重组,是基于企业自身还有产业价值的情况下,比如破产重整、并购等方式来做优,或者有大把现金的企业收购资产也可以。 整体看,如果思路清晰,第一就是控制新股发行数量,坚决抵制纯粹为了上市套现的企业,第二就是加大重整和重组支持力度,让一部分优质企业通过重组上市或者存量通过重整实现重生优化,第三是如何补偿因为大股东为非作歹导致公司退市给投资者带来的损失,比如募集资金存留一部分作为补偿备用金或者大股东的股权部分质押到交易所作为未来补偿备用股。以上想法,希望新一届证监会班子可以参考。@证监会发布\n\n当日,证监会还紧急召开了两场会议,"会诊"提升上市公司投资价值。一是推动上市公司提升投资价值专题座谈会,围绕加强以投资者为本的上市公司文化、着力提升上市公司投资价值、大力推动公司高质量发展的主题,听取上市公司有关情况及意见建议。二是举行座谈会,就进一步优化并购重组监管机制、大力支持上市公司通过并购重组提升投资价值征求部分上市公司和证券公司意见建议。 收起d']
['游人牛哥', '庄随我动', '老艾观察', '财经网', '双博士的分享', '帽子哥聊财经', '实战张姐说', '陈志豪财经', '凯恩斯', '股道热肠也', '七月梅子青', 'ST逍遥客']
- 接下来收集每一条新闻每一条评论中具体信息,这里需要设计一个循环,同时,要对每一条评论进行展开操作。
for page inrange(20):print(page)#定位下一页按钮
nextpage_button = browser.find_element("link text",'下一页')#点击按键
nextpage_button.click()#超过五秒页面未加载完成则报错
wait = WebDriverWait(browser,5)#与前面类似
nodes1 = browser.find_elements("css selector",'div.card > div.card-feed > div.content')for i inrange(0,len(nodes1),1):
flag =Falsetry:
nodes1[i].find_element("css selector","p>a[action-type='fl_unfold']").is_displayed()
flag =Trueexcept:
flag =Falseif(flag and nodes1[i].find_element("css selector","p>a[action-type='fl_unfold']").text.startswith('展开全文c')):
nodes1[i].find_element("css selector","p>a[action-type='fl_unfold']").click()
comment.append(nodes1[i].find_element("css selector",'p[node-type="feed_list_content_full"]').text)else:
comment.append(nodes1[i].find_element("css selector",'p[node-type="feed_list_content"]').text)
username.append(nodes1[i].find_element("css selector","div.info>div:nth-child(2)>a").text)
- 运行结果如下
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- 将数据储存在dataframe中,并展示部分内容
data = pd.DataFrame({'username':username,'comment':comment})print(data)
- 运行结果如下
username comment
0 游人牛哥 财联社新消息!\n这届证监会主席,是最务实的!\n一切以人民为中心!\n给证监会新主席点个赞
1 庄随我动 我还是个“菜鸟”,证监会主席吴清记者会时这样说!\n新主席说自己进入现在的工作还没有“满月”...
2 老艾观察 新主席吴清亮相主持 证监会两天连开12场座谈会 透露哪些监管重点? O新主席吴清亮相主持 证...
3 财经网 【#20条金句看证监会主席吴清答记者提问#,最新定调监管工作】#2024两会看点#今日,证监...
4 双博士的分享 证监会新主席说他上午接到临时通知,下午就飞北京赴任了。其上任后,除了5000亿以上的国家队资...
... ... ...
221 新财经杂志 有消息称证监会新主席肖钢将出席今日下午的证监会新闻发布会。按照惯例,每周五下午3:30分,证...
222 黄永耀 对于市场要坚信股市是今年最佳的投资场所,1949点是本轮牛市的起点,不会跌破,跌破金光自然没...
223 金融圈观察 【高层批准国债期货 新主席肖钢已签字】据东方早报获悉,新任证监会主席肖钢在4月1日已经批准了...
224 财经中国 【国债期货获监管高层批准 新主席肖钢已签字】中止18年的中国国债期货重启上市事项日前获得实质...
225 新浪证券 【国债期货获监管高层批准 新主席肖钢已签字】记者从多位知情人士处获悉,新任证监会主席肖钢在4...
Totally 226 rows × 2 columns
- 将数据储存在excel中导出
data.to_excel("weibo.xlsx")
本文转载自: https://blog.csdn.net/CJIANJIANCjiajia/article/details/143958312
版权归原作者 LemonCat_xmu 所有, 如有侵权,请联系我们删除。
版权归原作者 LemonCat_xmu 所有, 如有侵权,请联系我们删除。