代码练习:
import requests #引用requests库
import re
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}#模拟浏览器访问强求,在谷歌浏览器输入about:version即可获取
url='https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&rsv_dl=ns_pc&word=%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4'#将网址赋值给变量url
res=requests.get(url,headers=headers).text #通过requests库的get()函数访问该网址,通过.text获取网页源代码的文本内容
#print(res) #打印输出获取的网页源代码
#正则表达式提取内容
p_source='新闻来源:(.*?)"'#用(.*?)来提取内容
source=re.findall(p_source,res,re.S)#由于(.*?)无法匹配换行,所以要给出re.S参数,在查找时才自动考虑换行,否则提取不到内容
p_date='发布于:(.*?)"'
date=re.findall(p_date,res,re.S)
p_href='<h3 class="news-title_1YtI1"><a href="(.*?)"'
href=re.findall(p_href,res,re.S)
p_title='标题:(.*?)"'
title=re.findall(p_title,res,re.S)
#由于此处可以直接提取,没有过多用到清洗公式,书中用到以下几个清洗公式
#strip()函数把不需要的空格和换行符去掉
#re.sub(需要替换的内容,替换值,原字符串)
#split()函数分割提取内容的列表
#创建两个空列表a[];b[],再用append()为两个空列表添加新元素
#数字清洗,及建立公式循环
#打印输出,i是数字,所以字符串拼接时要用str()函数转换,再,i是从0开始的,所以要写成str(i+1)
for i in range(len(title)):
print(str(i + 1) + '.' + title[i] + '(' + date[i] + '-' + source[i] + ')')
print(href[i])
运行结果: