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">.*? (.*?)</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 + '搜狗新闻爬取失败')
好了内容就学习到这里,下一课学习如何将爬取数据存储到数据库!