爬取某只股票的新闻信息-以广州白云机场(股票代码600004)为例)

==============================

广州白云机场(股票代码600004)百度新闻的爬取

==============================

一、获取网页源代码

基本库的引入

import requests  # 获取网页源代码的库
import re  # 正则表达式的库
import docx  # 把数据写入word文档的库

请求头

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4209.400'}

要爬取的网页

url = 'https://www.baidu.com/s?tn=news&rtt=4&bsst=1&cl=2&wd=%E7%99%BD%E4%BA%91%E6%9C%BA%E5%9C%BA&medium=0'  # 百度资讯搜索-按时间排序-全部资讯

获取的网页源代码

res = requests.get(url, headers=headers).text

打印网页源代码,在源代码中按Ctrl+F搜索网页上某个关键词,看是否真实获取了网页源代码`

print(res)

二、获取网址、新闻标题、发布日期、来源

1.获取新闻网址的正则表达式

p_href = '<h3 class="news-title_1YtI1"><a href="(.*?)"'
href = re.findall(p_href, res, re.S)
print(href)

2.获取新闻标题的正则表达式

p_title = '<h3 class="news-title_1YtI1"><.*?>(.*?)<!--/s-text--></a></h3>'
title = re.findall(p_title, res, re.S)
print(title)

3.获取新闻发布日期的正则表达式

p_time1 = '<span class="c-color-gray2 c-font-normal">(.*?)</span>'
time1 = re.findall(p_time1, res, re.S)
print(time1)

4.获取新闻来源的正则表达式

p_source = '<span class="c-color-gray c-font-normal c-gap-right">(.*?)</span>'
source = re.findall(p_source, res, re.S)
print(source)

三、清洗网址、标题、来源、发布日期

1.清洗标题

for i in range(len(href)):
    title[i] = title[i].strip()
    title[i] = re.sub('<.*?>', '', title[i])
print(title)

2.清洗发布日期

for i in range(len(href)):
    time1[i] = re.sub('年', '-', time1[i])
    time1[i] = re.sub('月', '-', time1[i])
    time1[i] = re.sub('日', '', time1[i])
print(time1)

四、形成正式的新闻信息

**for i in range(len(href)):
    print(str(i + 1) + '.' + title[i] + '(' + time1[i] + '-' + source[i] + ')')
    print(href[i])**    

五、把信息保存进TXT文档中

file = open('D:\\0exam\\news.txt', 'a', encoding='utf-8')
file.write('数据挖掘completed!' + '\n' + '\n')
for i in range(len(href)):
    file.write(str(i + 1) + '.' + title[i] + '(' + time1[i] + '-' + source[i] + ')' + '\n')
    file.write(href[i] + '\n')
file.write('——————————————————————————————' + '\n' + '\n')
file.close()

六、把数据保存进WORD中

把数据保存进word文档中,请先在电脑D盘下建立0exam的文件夹(你可以随意,不过路径D:\0exam\report.docx要跟随变动),里面创建一个report.docx的word文档(名字你也可以随意,不过也要做相应的改变),文档建立好以后,请在空白文档中敲一下空格,否则容易出现写入错误

file1 = docx.Document('D:\\0exam\\report.docx')
for i in range(len(href)):
    file1.add_paragraph(str(i + 1) + '.' + title[i] + '(' + time1[i] + '-' + source[i] + ')')
    file1.add_paragraph(href[i] + '\n')
file1.save('D:\\0exam\\report.docx')

全部代码

# ==============================
# 广州白云机场(股票代码600004)百度新闻的爬取
# ==============================
# 一、获取网页源代码
# 基本库的引入
import requests  # 获取网页源代码的库
import re  # 正则表达式的库
import docx  # 把数据写入word文档的库
# 请求头
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4209.400'}
# 要爬取的网页
url = 'https://www.baidu.com/s?tn=news&rtt=4&bsst=1&cl=2&wd=%E7%99%BD%E4%BA%91%E6%9C%BA%E5%9C%BA&medium=0'  # 百度资讯搜索-按时间排序-全部资讯
# 获取的网页源代码
res = requests.get(url, headers=headers).text
# 打印网页源代码,在源代码中按Ctrl+F搜索网页上某个关键词,看是否获取了网页源代码
print(res)

# 二、获取网址、新闻标题、发布日期、来源
# 1.获取新闻网址的正则表达式
p_href = '<h3 class="news-title_1YtI1"><a href="(.*?)"'
href = re.findall(p_href, res, re.S)
print(href)
# 2.获取新闻标题的正则表达式
p_title = '<h3 class="news-title_1YtI1"><.*?>(.*?)<!--/s-text--></a></h3>'
title = re.findall(p_title, res, re.S)
print(title)
# 3.获取新闻发布日期的正则表达式
p_time1 = '<span class="c-color-gray2 c-font-normal">(.*?)</span>'
time1 = re.findall(p_time1, res, re.S)
print(time1)
# 4.获取新闻来源的正则表达式
p_source = '<span class="c-color-gray c-font-normal c-gap-right">(.*?)</span>'
source = re.findall(p_source, res, re.S)
print(source)

# 三、清洗网址、标题、来源、发布日期
# 1.清洗标题
for i in range(len(href)):
    title[i] = title[i].strip()
    title[i] = re.sub('<.*?>', '', title[i])
print(title)
# 2.清洗发布日期
for i in range(len(href)):
    time1[i] = re.sub('年', '-', time1[i])
    time1[i] = re.sub('月', '-', time1[i])
    time1[i] = re.sub('日', '', time1[i])
print(time1)

# 四、形成正式的新闻信息
for i in range(len(href)):
    print(str(i + 1) + '.' + title[i] + '(' + time1[i] + '-' + source[i] + ')')
    print(href[i])

# 五、把信息保存进TXT文档中
file = open('D:\\0exam\\news.txt', 'a', encoding='utf-8')
file.write('数据挖掘completed!' + '\n' + '\n')
for i in range(len(href)):
    file.write(str(i + 1) + '.' + title[i] + '(' + time1[i] + '-' + source[i] + ')' + '\n')
    file.write(href[i] + '\n')
file.write('——————————————————————————————' + '\n' + '\n')
file.close()

# 六、把数据保存进WORD中
# 把数据保存进word文档中,请先在电脑D盘下建立0exam的文件夹(你可以随意,不过路径D:\\0exam\\report.docx要跟随变动),里面创建一个report.docx的word文档(名字你也可以随意,不过也要做相应的改变),文档建立好以后,请在空白文档中敲一下空格,否则容易出现写入错误
file1 = docx.Document('D:\\0exam\\report.docx')
for i in range(len(href)):
    file1.add_paragraph(str(i + 1) + '.' + title[i] + '(' + time1[i] + '-' + source[i] + ')')
    file1.add_paragraph(href[i] + '\n')
file1.save('D:\\0exam\\report.docx')

猜你喜欢

转载自blog.csdn.net/weixin_44354213/article/details/108417344