• Python数据分析实战-爬取以某个关键词搜索的最新的500条新闻的标题和链接(附源码和实现效果)


    实现功能

    通过百度引擎,爬取以“开源之夏”为搜索关键词最新的500条新闻的标题和链接

    实现代码

    1.安装所需的库:你需要安装requestsbeautifulsoup4库。可以使用以下命令通过pip安装:

    pip install requests beautifulsoup4
    

    2.发起搜索请求并获取多个搜索结果页面的HTML内容:由于一次搜索结果页面只包含一部分新闻,我们需要多次请求不同页码的搜索结果页面。可以使用以下代码实现:

    1. import requests
    2. def search_baidu(keyword, page):
    3. url = f"https://www.baidu.com/s?wd={keyword}&pn={page}&rn=10"
    4. headers = {
    5. "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36"
    6. }
    7. response = requests.get(url, headers=headers)
    8. if response.status_code == 200:
    9. return response.text
    10. else:
    11. return None

    这个函数将返回搜索结果页面的HTML内容。

    3.解析搜索结果并提取新闻标题和链接:使用beautifulsoup4库解析HTML内容,提取出搜索结果中的新闻标题和链接。可以使用以下代码实现:

    1. from bs4 import BeautifulSoup
    2. def parse_search_results(html):
    3. soup = BeautifulSoup(html, "html.parser")
    4. news_results = soup.find_all("h3", class_="t")
    5. news_list = []
    6. for result in news_results:
    7. title = result.a.text
    8. link = result.a["href"]
    9. news_list.append({"title": title, "link": link})
    10. return news_list

    这个函数将返回一个包含新闻标题和链接的列表。

    4.完整的爬取过程:将上述步骤整合到一个函数中,实现完整的爬取过程。可以使用以下代码实现:

    1. def crawl_latest_news(keyword, num_news):
    2. news_list = []
    3. num_pages = num_news // 10 + 1 # 每页10条新闻,计算需要请求的页面数
    4. for page in range(num_pages):
    5. html = search_baidu(keyword, page * 10)
    6. if html:
    7. page_news = parse_search_results(html)
    8. news_list.extend(page_news)
    9. else:
    10. print(f"无法获取第 {page+1} 页的搜索结果")
    11. return news_list[:num_news]

    现在,你可以调用crawl_latest_news函数,并传入你想要搜索的关键词和要获取的新闻数量(这里是500),获取最新的500条新闻列表。例如:

    1. keyword = "开源之夏"
    2. num_news = 500
    3. news_list = crawl_latest_news(keyword, num_news)
    4. if news_list:
    5. for news in news_list:
    6. print(news["title"])
    7. print(news["link"])
    8. print()
    9. else:
    10. print("无法获取搜索结果")

    实现效果

    写在后面

    本人读研期间发表5篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,对Python有一定认知和理解,会结合自身科研实践经历不定期分享关于python、机器学习、深度学习等基础知识与应用案例。

    致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。

    1、邀请三个朋友关注本订阅号或2、分享/在看任意订阅号的三篇文章即可在后台联系我获取相关数据集和源码

    2、关注“数据杂坛”公众号,点击“领资料”即可免费领取资料书籍。

    3、如果对本文有疑问,或者有论文指导的相关需求,点击“联系我”添加作者微信直接交流。

  • 相关阅读:
    springboot-kafka
    【2023集创赛】国家集创中心杯全国二等奖:运算放大器
    java mysql高校返校新冠疫情排查系统
    Vue中的基础指令
    笔记之--实用类
    vue3 状态管理工具 pinia 使用
    大数据下一代变革之必研究数据湖技术Hudi原理实战双管齐下-上
    selenium模块
    前端技能树,面试复习—— 模拟题+真题系列(2): 单例模式 | 大文件上传 | SSR 原理 | 收集依赖 | HOOK 原理 | Worker 等等
    【MM小贴士】SAP可配置物料的功能实现
  • 原文地址:https://blog.csdn.net/sinat_41858359/article/details/134535345