待爬取的20条新闻部分如下:
通过观察审查元素发现,标题,链接和时间都藏在class=result里面,一个页面共有20条新闻,只要循环20遍,每次取其中div的相应元素即可。
#coding:utf-8
#引入相关模块import requests
from bs4 import BeautifulSoup
url =
"http://news.baidu.com/ns?cl=2&rn=20&tn=news&word=%E4%B8%8A%E6%B5%B7%E6%B5%B7%E4%BA%8B%E5%A4%A7%E5%AD%A6"
#请求搜索上海海事大学关键字新闻网页的URL,获取其text文本response = requests.get(url) #对获取到的文本进行解析
html = response.text
soup=BeautifulSoup(html,features='lxml') #根据HTML网页字符串创建BeautifulSoup对象
news=soup.find_all('div', {"class": "result"})
for t in news:
data = {
"标题":t.find('a').text,
"链接":t.find('a')['href'],
"时间":t.find('p').get_text()
}
print(data)
运行结果如下: