python实现搜狗新闻挖掘

本节课学习搜狗新闻网的重点新闻挖掘

先看下挖掘的效果:

python实现搜狗新闻挖掘

思路:

1、地址-地址中的目标内容

2、取关键内容使用正则表达式- (.*?)

3、定义目标,爬取哪些公司内容

4、for循环url,然后拼接内容

详细代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2020/8/1 18:24
# @Author  : Jianhua Wang
# @Site    : 
# @File    : 搜狗新闻数据挖掘.py
# @Software: PyCharm

import requests
import re
#定义浏览器头信息
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}
#搜狗函数
def sogou(company):
    """
    :param company:多个公司
    :return:
    """
    #爬取地址 给定目标公司变量
    url = 'https://news.sogou.com/news?mode=1&sort=0&fixrank=1&query=' + company + '&shid=djt1'
    res = requests.get(url,headers=headers, timeout=10).text
    # print(res)   #调试使用 这里打印的是接口返回的html中的全部内容

    # 编写正则提炼数据 其他网站也适用修改下字段即可
    p_title = '<a href=".*?" id="uigs.*?" target="_blank">(.*?)</a>'
    title = re.findall(p_title, res)
    p_href = '<a href="(.*?)" id="u.*?" target="_blank">'
    href = re.findall(p_href, res)
    p_date = '<p class="news-from">.*?&nbsp;(.*?)</p>'
    date = re.findall(p_date, res)

    # 数据清洗及打印输出
    for i in range(len(title)):
        title[i] = re.sub('<.*?>', '', title[i])
        title[i] = re.sub('&.*?;', '', title[i])
        date[i] = re.sub('<.*?>', '', date[i])
        print(str(i+1) + '.' + title[i] + '-' + date[i])
        print(href[i])

companys = ['华能信托', '阿里巴巴', '万科集团', '百度', '腾讯', '京东']
for i in companys:
    try:
        sogou(i)
        print(i + '搜狗新闻爬取成功')
    except:
        print(i + '搜狗新闻爬取失败')

好了内容就学习到这里,下一课学习如何将爬取数据存储到数据库!