本文主要讲,用户输入标签后,通过爬虫,可实现获取相关的新闻,将获取的新闻保存为.csv文件。
首先导入需要的第三方库
以‘爱国’标签为例,获取的网址为:https://www.toutiao.com/api/search/content/?aid=24&app_name=web_search&offset=0&format=json&keyword=%E7%88%B1%E5%9B%BD&autoload=true&count=20&en_qc=1&cur_tab=1&from=search_tab&pd=synthesis×tamp=1569648697670】
我们可以发现中间有一个keyword,经验告诉我们,这个就是标签,我们需要改变的的也正是这个,同时我们也该注意到url最后面有一个 timestamp,这个是时间戳,为了避免长时间使用同一个时间戳,这里需要引入time模块,生成一个即时的时间戳。
代码如下:
今日头条的反爬挺厉害的,如果headers中不传入cookie,是无法多次都返回我们需要的新闻内容的,而cookie的获取有简单的方式就是复制粘贴;即打开一个标签的文章,打开开发者工具,在headers中复制cookie,如图;
headers的伪装代码如下:
以
'https://www.toutiao.com/api/search/content/?aid=24&app_name=web_search&offset=0&format=json&keyword=%E6%B3%95%E5%9B%BD&autoload=true&count=20&en_qc=1&cur_tab=1&from=search_tab&pd=synthesis×tamp=1569650894434'
为例;
我们打开开发者工具点击左边第一个可以看到如下图面:
经过分析,我们可以发现新闻主要在字段'data'中:
需要注意的是:data中并非所有都是新闻,最后我发现当出现‘abstract’这个字段时,一定是新闻,这里可以借此加一个判断
点开data中的其中一个内容,如图:
而我们需要的提取的内容分别就是字段:abstract,articleurl,commentscount,datetime,read_count,title
代码实现:
使用pandas库的to_csv来保存成.csv文件
代码如下:
上面的是按顺序执行下来的,而完整代码我是用面向对象的编程方式(即使用类)
完整代码如下:
以上就是本期的内容,本文如果存在不足和错误欢迎指出,谢谢大家的阅读!!!