Python3从搜狐国际新闻抓取---尝试版

Python3从搜狐国际新闻抓取—尝试版

点击此处获取完整代码

- 依赖包版本信息

Python 3.7.2
requests 2.21.0
beautifulsoup4 4.6.3

首先下载HTML代码到本地
import requests
from bs4 import BeautifulSoup
url = 'http://www.sohu.com/c/8/1461'
res = requests.get(url)
res.encoding = 'utf-8'
print(res.text)
  • 观察HTML也代码结构以及想要爬取的位置
使用BeautifulSoup解析
soup = BeautifulSoup(res.text, 'html.parser')
  • 此处可以使用print(soup.text)查看
# data-role="news-item"
# 
# 上述class为多值的属性(空格隔开) model = soup.select('.news-box-aa') print(type(model)) print(model)
  • 此处model的类型为:,一个列表。
  • model[i],存放着每一条新闻的标题,以及详情链接
print(type(model[0]))
print(model[0])
  • 可以看到model列表的第一个元素的类型和值
  • type(model[0]) 为
  • 结果如下:

  • 尝试获取新闻标题
# type(model[0]) = 
print(".name = " + model[0].name)
print(model[0].select('h4'))
print(model[0].select('h4')[0])
print(model[0].select('h4')[0].text)
# strip():把头和尾的空格去掉
# lstrip():把左边的空格去掉
# rstrip():把右边的空格去掉
print(model[0].select('h4')[0].text.strip())
  • 尝试获取model[0]的连接
# type(model[0]) = 
print(".name = " + model[0].name)
print(model[0].select('h4'))
print(model[0].select('h4')[0])
print(model[0].select('h4')[0].select('a'))
print(model[0].select('h4')[0].select('a')[0]['href'])
  • 尝试通过连接获取新闻详情
news_url = "http:"+model[0].select('h4')[0].select('a')[0]['href']
res1 = requests.get(news_url)
res1.encoding = 'utf-8'
print(res1.text)
soup1 = BeautifulSoup(res1.text, 'html.parser')
print(soup1.title)
ps = soup1.select('p')
print(type(ps))
print(ps)
# type(ps[0]) = 
print(type(ps[0]))
print(ps[0])
  • 将得到的结果保存到“尝试输出 .md”文件中
# 写入文件中
file = open("尝试输出.md", 'w', encoding="utf-8")
file.write("# "+model[0].select('h4')[0].text.strip() + "\n")
# flag用来标记是否已经存在 strong
flag = 1
for p in ps:
    if(len(p.select('strong')) == 0 and flag == 1):
        # 无 strong
        if(p.text.strip() !='' and p.text.strip() != ''):# ''是url编码中的%7f,跟空格差不多
            file.write("- " + p.text.strip() + "\n")
    elif(len(p.select('strong')) == 0 and flag == 0):
        # 无 strong 但是已经存在strong
        if(p.text.strip() !='' and p.text.strip() != ''):# ''是url编码中的%7f,跟空格差不多
            file.write("\t- " + p.text.strip() + "\n")
    else:
        # 有 strong
        flag = 0
        file.write("\n")
        file.write("    **" + p.text.strip() + "**\n")
file.close()

尝试结束。

  • 附:尝试输出 .md 文件如下

海洋升温的速度比五年前快了40% 南极正在加速融化

  • 原标题:海洋升温的速度比五年前快了40% 南极正在加速融化
  • 地球正以前所未有的速度快速升温。最新一份研究中的一系列数据显示,目前海洋的升温速度比2013年联合国政府间气候变化专门委员会(IPCC)报告显示的要快40%。
  • 该研究的联合作者Zeke Hausfather指出,2018年将打破去年的记录,成为地球海洋有史以来最温暖的一年。
  • 海洋的“记忆力”要长久得多
  • 由于海洋的热含量不会像表面温度那样急剧变化,海洋温度也是地球气候变暖的可靠指标。
  • 1月11日发表在全球权威学术期刊《科学》(Science)上一篇题为《海洋变暖的速度有多快?》的研究表示,人类活动引起的气候变化,主要是由于吸热气体浓度升高引起了地球气候系统能量不平衡,大约93%的能量不平衡在海洋中积聚。
  • 目前为止,大部分的热量聚集在海水上层,并只是缓慢地扩散到更深层海水。
  • 不过,如果认为立即采取措施就能阻止这一趋势,那么就错了。海洋的“记忆力”要长久得多,这意味着即使在人类减少温室气体排放后很长时间内,现在进入海水的热量仍将继续释放。
  • 该报告的联合作者Zeke Hausfather对Axios表示:
  • 返回搜狐,查看更多
  • 责任编辑:

你可能感兴趣的:(Python,爬虫)