1.查看网页源代码
打开百度新闻网页,link,F12,打开查看代码:
1.1复制头条新闻源代码
点击左上角的图标(蓝色),然后将鼠标移到第一条新闻标题上:
鼠标右键,复制代码:
粘贴的结果是:#pane-news > div > ul > li.hdline0 > strong > a
鼠标移到第二个标题,并复制代码得到的结果为:#pane-news > div > ul > li.hdline1 > strong > a > b
第三个标题:#pane-news > ul:nth-child(2) > li.bold-item > a:nth-child(2)
相信你应该已经发现,除了最上面的头条外(强调:属于第一个紧挨着的头条,有时候只有一个,为 li.hdline0,有时候多个就是 li.hdline0和 li.hdline1…)选择器中 li.hdline+数字,其余几个选择器都是只有 ul:nth-child() 括号中的数字不同,所以除了第一题目,其余标题可以使用 ul:nth-child(n) 提取出来。
2.编写程序
from requests_html import HTMLSession#一个与requests库不同的新库,大家可以尝试学习一下
session = HTMLSession()
def get_news(url):#定义一个函数
news_titles = []#定义一个空集合
r = session.get(url)#获得页面信息
title_baidu1 = r.html.find('#pane-news > div > ul > li.hdline0 > strong > a', first=True)#上文强调过,有时候最上面有俩个头条,可以加如下代码
#title_baidu1 = r.html.find('#pane-news > div > ul > li.hdline1 > strong > a', first=True)#只是li.hdline1不同
news_titles.append(title_baidu1.text)
title_baidu3 = r.html.find('#pane-news > ul:nth-child(n) > li.bold-item > a')#这是一个列表的形式
for title in title_baidu3:
news_titles.append(title.text)
for title in news_titles:
print(title)
url = 'https://news.baidu.com/'
if __name__=='__main__':
get_news(url)