Webdriver 爬取新浪滚动新闻
初始想法
本人现在是国际关系学院2016级的本科生,学的是信息管理与信息系统。讲道理不知道这个专业到底是干啥的,现在选择的后续方向是数据科学与工程,并且在老师的自然语言处理小组。爬虫是做自然语言处理的基础嘛,学习机器学习之前先学学怎么爬取内容还是挺有意义的。本来开始想着爬一下新浪微博的内容,但是又涉及到滚动爬取,账号登陆之类的繁琐问题,还是先玩玩滚动新闻吧。其实讲道理中国新闻网的滚动新闻做的比新浪的好多了,界面也好看,不过这都是爬完之后才发现的哈哈哈哈哈哈哈
背景介绍
本项目为基于新浪滚动新闻(https://news.sina.com.cn/roll/#pageid=153&lid=2509&k=&num=50&page=1)进行网页爬取,以新闻标题为文件名称,以新闻内容为文件正文存储。
内容介绍
环境要求
- 环境要求:python3.7+
- 安装包要求:time,requests,random,Beautifulsoup,selenium等
文件介绍
- main:调取其他所有文件相关函数,输入初始url,并计算爬取全部网页耗时
- date_helper:对网页日期进行调整实现自动翻页
- data_helper:对数据的所有路径进行调整
- spider:爬取网页的主文件,调用Webdriver获取主索引页的子页面并获取网页内容
- article_spider:爬取新闻正文内容
代码
main
from date_helper import date_processing
from data_helper import pickle_writer
from spider import *
import time
start = time.clock()
if __name__ == '__main__':
url_org = 'http://roll.news.sina.com.cn/s/channel.php?ch=01#col=89&spec=&type=&date={}&ch=01&k=&offset_page=0&offset_num=0&num=60&asc=&page='
while True:
date = date_processing() # 获取日期
output_list = [] # 存放输出序列 list
url = url_org.format(date) # 生成待爬取URL
sina(url,output_list,date) # 爬虫
print(output_list)
print(len(output_list))
file_name = ''.format(date)
pickle_writer(output_list, file_name) # 写入临时文件存放
end = time.clock()
print('Running:%s seconds.'%(end - start))
date_helper
from selenium import webdriver
import re
import time
import calendar
import re
import codecs
from data_helper import *
def count_days(year, month):
cal = calendar.monthrange(year, month)
pattern = re.compile(r'\d+')
days = pattern.findall(str(cal))[1]
return days
def month_sub(year,month):
if month > 10:
month -= 1
month = str(month)
elif month <= 10 and month > 1 :
month -= 1
month &#