Python爬取新浪新闻

0x001:效果展示

效果展示

0x002:先安装需要使用的第三方库

requests库

  • requests是python实现的简单易用的HTTP库,但因为是第三方库,所以使用前需要先安装(如果用的是Anaconda则不用安装),安装方法:

    pip install requests

  • 安装完成后,使用import requests导入该库测试一下,若没有报错则为安装成功

bs4库

  • BS4全称是BeatifulSoup,它提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能,但因为是第三方库,所以使用前需要先安装(如果用的是Anaconda则不用安装),安装方法:

    pip install bs4

  • 安装完成后,使用import bs4导入该库测试一下,若没有报错则为安装成功

0x003:获取最新新闻列表

  1. 进入新浪国际新闻页面 -> https://news.sina.com.cn/world/
    进入页面后鼠标右击点检查(或按快捷键F12)打开开发人员工具,然后点击Network(网络),最后刷新一下页面,刷新后如图所示:
    发现world文件
  2. 点击world文件 -> 点击Headers(标头),通过查看Request Method(请求方法)发现该网页使用的是GET,复制该URL
    请求方法为GET
  3. 利用requests库获取world文件的响应数据
    import requests #导入requests库
    res = requests.get('https://news.sina.com.cn/world/')  #使用get请求方式
    res.encoding = 'utf-8'  #把编码改为utf-8
    print(res.text)  #以文本形式输出

获取新闻的标题、日期和链接

  1. 在开发人员工具里,先点击左上角的选择检查图标,后点击页面上新闻的标题,在Elements(元素)里会自动定位到当前标题所在的位置,如图所示:
    获取标题所在位置
  2. 通过上图可以看出,新闻的标题是在news-item下的h2
  3. 利用bs4库里的BeautifulSoup获取新闻的标题
    import requests
    from bs4 import BeautifulSoup
    res = requests.get('https://news.sina.com.cn/world/')
    res.encoding = 'utf-8'
    soup = BeautifulSoup(res.text, 'html.parser') #实例化soup对象
    for news in soup.select('.news-item'):  #标题存放在news-item下,class对应'.'  id对应'#'
         if len(news.select('h2')) > 0: #如果标题不为空
             print(news.select('h2')[0].text) #输出新闻的标题
  4. 获取日期和链接的方法和上面一样
    news.select('time')[0].text  #获取日期
    news.select('a')[0].text     #获取链接

0x004:获取新闻文章内容

获取文章的标题、日期、内容和作者

  1. 先随便复制一篇新闻的链接,获取方法和上面的方法相同,具体步骤不再演示
    import requests
    from bs4 import BeautifulSoup
    res = requests.get('https://news.sina.com.cn/w/2021-02-07/doc-ikftssap4647063.shtml')
    res.encoding = 'utf-8'
    soup = BeautifulSoup(res.text, 'html.parser')
    soup.select('.main-title')[0].text  #获取标题
  2. 获取日期和链接的方法和上面一样
    soup.select('.date')[0].text  #获取日期
    ' '.join([p.text.strip() for p in soup.select('#article p')[:-1]])  #获取内容
    soup.select('.show_author')[0].text.lstrip("责任编辑:")  #获取作者

0x005:代码汇总

  • 综合以上内容,将新闻的标题、日期和链接等等,代码如下:
    import requests
    from bs4 import BeautifulSoup
    res = requests.get('https://news.sina.com.cn/world/')
    res.encoding = 'utf-8'
    soup = BeautifulSoup(res.text, 'html.parser')
    for news in soup.select('.news-item'):
         if len(news.select('h2')) > 0:
             title = news.select('h2')[0].text
             time = news.select('.time')[0].text
             links = news.select('a')[0]['href']
             print(title,"| 发布日期:", time, "| 文章链接:\n", links)
    def newsArticles(newsurl):
         result = {}
         res = requests.get(newsurl)
         res.encoding = 'utf-8'
         soup = BeautifulSoup(res.text, 'html.parser')
         result['标题'] = soup.select('.main-title')[0].text
         result['时间'] = soup.select('.date')[0].text
         result['正文'] = ' '.join([p.text.strip() for p in soup.select('#article p')[:-1]])
         result['作者'] = soup.select('.show_author')[0].text.lstrip("责任编辑:")
         return result
  • 先运行上面的代码获取最新新闻列表的标题、日期和链接,再复制自己想要查看的新闻对应的链接,调用方法:
    newsArticles('文章链接')

文章作者:Torres-圣君
文章链接:https://www.cjlblog.vip/posts/87f2959f.html
版权声明:本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Torres-圣君


评论
 上一篇
免费获取网上的付费资料 免费获取网上的付费资料
有时当我们需要写一些论文,或完成某项任务时可能会去网上查阅一些相关资料,而像百度文库类似的网站下载资料又需要VIP,所以本文讲解如何免费下载付费文章
2021-02-19
下一篇 
Anaconda安装教程 Anaconda安装教程
Anaconda指的是一个开源的Python发行版本,它可以便捷获取包且对包能够进行管理。Anaconda包含了conda、Python等等在内的超过180个科学包及其依赖项。
2021-01-21
  目录