1 需求
提取百度新闻的标题、网址、日期和来源,最后进行数据清洗。
2 代码实现
import re
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0'}
url = "https://www.baidu.com/s?tn=news&rtt=4&bsst=1&cl=2&wd=阿里巴巴&medium=0"
res = requests.get(url=url, headers=headers).text
# 获取来源和日期
p_source = '<span class="c-color-gray c-font-normal c-gap-right">(.*?)</span>'
p_data = '<span class="c-color-gray2 c-font-normal">(.*?)</span>'
data = re.findall(p_data, res)
source = re.findall(p_source, res)
# 获取网址
p_href = 'h3 class="news-title_1YtI1"><a href="(.*?)"'
href = re.findall(p_href, res)
# 获取标题
p_title = '<h3 class="news-title_1YtI1">.*?>(.*?)</a>'
title = re.findall(p_title, res, re.S)
# 数据清洗
for index in range(len(title)):
title[index] = re.sub('<.*?>', '', title[index]).strip()
print(str(index + 1) + "." + title[index] + '(' + source[index] + " " + data[index] + ')')
print(href[index])