前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【保姆级教程】爬取网站上“气候变化”关键词新闻个数

【保姆级教程】爬取网站上“气候变化”关键词新闻个数

作者头像
阿黎逸阳
发布2024-05-09 15:16:52
1040
发布2024-05-09 15:16:52
举报

大学关系很好的老师想获取新闻中带“气候变化”关键词的新闻个数,用于论文写作。

在空余时间研究了一下,解决了许多小bug后终于实现啦。

具体的实施步骤是:明确爬取目标网站——明确爬取关键词——单页新闻标题获取——批量新闻标题获取——把新闻标题存到list中统计数量。

本文以北京的千龙网为例进行说明,希望代码能帮到更多有需要的小伙伴。

一、导入库

首先导入需要用到的库,具体如下:

代码语言:javascript
复制
import time
import random
from captcha import * 
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import wait
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from webdriver_manager.chrome import ChromeDriverManager
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions as EC

如有未安装库的小伙伴,自行百度安装一下。

二、定义爬取的目标网站和关键词

代码语言:javascript
复制
应用selenium进行数据爬取时,最头疼的是很多时候都会提示Chrome版本不匹配报错,需要重新下载对应版本。
本文应用代码直接安装Chrome,可以避免上述情况。
接着登录北京的千龙网,输入关键词进行查询,具体代码如下:
代码语言:javascript
复制
browser = webdriver.Chrome(ChromeDriverManager().install())
#安装chrome
browser.maximize_window()
#最大化窗口
login_url = 'https://www.chinaso.com/'
#网址
browser.get(login_url)
#登录网址
input_name = browser.find_element_by_xpath('//*[@id="q"]')
input_name.send_keys('气候变化')
browser.find_element_by_xpath('//*[@id="flpage"]/div/input').click()
#输入关键词并查询

登录并搜索“气候变化”关键词可看到如下页面:

三、获取单页新闻标题并点击下一页 接着点击浏览器中右上角红框中的三个点——点击更多工具——点击开发者工具来到开发者界面,具体如下:

如果想快捷进入该界面,可直接键盘按Ctrl+Shift+I即可。 接着想办法获取该界面的所有标题。 点击下图右上角红框中的箭头,把鼠标移动到左边红框中的标题上并点击,即可获取填到代码中的信息。

本来想通过Xpath的方式获取所有标题,但找规律时发现每个标题的Xpath路径存在混乱的情况。 故通过copy element看看有没有其他方法获取标题,复制后得到的信息如下:

代码语言:txt
复制
<a href="https://www.chinaso.com/link?url=UOLknXBiUMJw5yewhSYbC1Hc1arTtsWoWs2OR1iC2Rbf5iygxfGCQddd6S79O%2BzWnlUck9v5htyUtQc4szfUlA%3D%3D&amp;pos=12&amp;wd=%E6%B0%94%E5%80%99%E5%8F%98%E5%8C%96" target="_blank" rel="noreferrer noopener" class="common-title">刘世锦:应对<em>气候变化</em>、实现碳中和的长期目标不能动摇或后退</a>

可以发现,通过find elements by class name的方式可以实现,具体代码如下:

代码语言:txt
复制
text_list = browser.find_elements_by_class_name("common-title")
for i in range(len(text_list)):
    title_list.append(text_list[i].text)
    #获取标题
    print(text_list[i].text)

得到结果:

气候变化·百科资料

世界气象组织报告:2023年气候变化和极端天气重创亚洲

国际劳工组织:警惕气候变化危害劳动者健康

为应对气候变化提供有力科技支撑

南非议会上院通过《气候变化法案》

中国气候变化领导力名单发布 助力可持续经济发展

欧盟气候变化监测机构:今年3月全球气温创历史新高

看宁夏农业 伊拉克气候变化和农业可持续发展研修班来宁研修考察

新研究预测气候变化或将影响全球计时

联合国:气候变化危及全球超过70%的劳动者健康

中国新能源产品出口为应对气候变化作出积极贡献

中国新能源产品出口为应对全球气候变化作出积极贡献

(聚焦博鳌)聚焦气候变化,博鳌嘉宾呼吁加强国际合作

刘世锦:应对气候变化、实现碳中和的长期目标不能动摇或后退

去年全球多项气候变化指标创纪录 多国呼吁加快行动

新研究预测气候变化可能导致蜜蜂数量下降 这时获取到了单页的所有标题,要想获取全量标题,需跳转到所有页面进行信息获取。

从浏览器中可以发现,可以通过点击下一页的方式获取所有页面信息,具体代码如下: time.sleep(5) browser.implicitly_wait(5) browser.find_element_by_class_name('btn-next').click() #点击下一页 四、批量获取所有标题 最后写循环获取所有标题。 在上文中介绍了获取单页标题和点击下一页的代码,所以获取全量标题的关键是:控制循环在获取到所有页面信息时自动退出。 要想实现该功能,可在代码中应用try函数,如果点击下一页没有报错,说明循环还未结束,如果报错,即到了最后一页,用break函数退出循环即可。 具体代码如下: title_list = [] num = 1 while True: text_list = browser.find_elements_by_class_name("common-title") for i in range(len(text_list)): title_list.append(text_list[i].text) #获取标题 #print(text_list[i].text) try: time.sleep(5) browser.implicitly_wait(5) browser.find_element_by_class_name('btn-next').click() #点击下一页 except: print(num) break num += 1 print(title_list) 得到结果:

‍打印一下标题数量,代码如下: len(title_list) 得到结果: 273 由于每天都会更新新闻,故得到的标题会动态变化,具体和跑代码的时间有关。 至此,应用Python批量爬取网站上“气候变化”关键词新闻个数已讲解完毕,如想了解更多Python中的函数,可以翻看公众号中“学习Python”模块相关文章。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿黎逸阳的代码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 三、获取单页新闻标题并点击下一页 接着点击浏览器中右上角红框中的三个点——点击更多工具——点击开发者工具来到开发者界面,具体如下:
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档