├── baidu_hot_words.py ├── README.md ├── baidu_hot_words.ipynb └── .ipynb_checkpoints └── baidu_hot_words-checkpoint.ipynb /baidu_hot_words.py: -------------------------------------------------------------------------------- 1 | 2 | # coding: utf-8 3 | 4 | # ## 百度新闻热搜词抓取 5 | # 6 | # 原抓取网址为:[http://news.baidu.com/n?cmd=1&class=reci](http://news.baidu.com/n?cmd=1&class=reci) 7 | # 8 | # Github代码:[点击访问](https://github.com/gaussic/baidu_hot_words) 9 | # 10 | # #### 接口与参数 11 | # 12 | # 接口的 `base_url` 为 [http://news.baidu.com/n?m=rddata&v=hot_word](http://news.baidu.com/n?m=rddata&v=hot_word) 13 | # 14 | # 带两个参数 15 | # 16 | # - type:0(全部)、2(国内)、1(国际)、5(社会)、14(军事)、6(财经)、10(汽车)、8(科技)、4(娱乐)、3(体育) 17 | # - date:格式为 20160703、20160704、20160705,以此类推 18 | # 19 | # #### 使用 requests 抓取关键词数据: 20 | 21 | # In[1]: 22 | 23 | import requests 24 | from bs4 import BeautifulSoup 25 | 26 | 27 | # In[2]: 28 | 29 | # 基本Url 30 | base_url = 'http://news.baidu.com/n?m=rddata&v=hot_word' 31 | hot_type = '0' 32 | 33 | parameters = {'type': hot_type} 34 | 35 | # 获取 JSON 数据 36 | r = requests.get(base_url, params=parameters) 37 | print(r.url) 38 | 39 | hot_words_dict = r.json() 40 | 41 | # 输出热搜关键词 42 | for hot_word in hot_words_dict.get('data'): 43 | print(hot_word.get('query_word')) 44 | 45 | 46 | # ### 添加日期参数 47 | # 48 | # 日期格式为 YYYYMMDD,如 20171122 49 | 50 | # In[3]: 51 | 52 | hot_type = '2' # 国内 53 | hot_date = '20171122' 54 | 55 | parameters = {'type': hot_type, 'date': hot_date} 56 | 57 | # 获取 JSON 数据 58 | r = requests.get(base_url, params=parameters) 59 | print(r.url) 60 | 61 | hot_words_dict = r.json() 62 | 63 | # 输出热搜关键词 64 | for hot_word in hot_words_dict.get('data'): 65 | print(hot_word.get('query_word')) 66 | 67 | 68 | # ### 按关键词抓取新闻 69 | # 70 | # 基本url为 [http://news.baidu.com/ns?tn=news](http://news.baidu.com/ns?tn=news), 接参数 word 字段。 71 | 72 | # In[4]: 73 | 74 | query_word = '香港将迎首位女特首' 75 | news_base_url = 'http://news.baidu.com/ns?tn=news' 76 | 77 | parameters = {'word': query_word} 78 | 79 | # 获取 JSON 数据 80 | r = requests.get(news_base_url, params=parameters) 81 | print(r.url) 82 | 83 | soup = BeautifulSoup(r.text, 'lxml') # lxml可以换成其他解析库 84 | news_html_list = soup.select('div.result') 85 | news_list = [] 86 | for news_html in news_html_list: 87 | news = {} 88 | news['标题'] = news_html.a.get_text().strip() 89 | news['链接'] = news_html.a['href'] 90 | source = news_html.find('p', 'c-author').get_text().strip().replace('\xa0\xa0', ' ').split(' ') 91 | news['来源'] = source[0] 92 | news['发布日期'] = source[1] 93 | 94 | news_list.append(news) 95 | 96 | import json 97 | for news in news_list: 98 | print(json.dumps(news, ensure_ascii=False)) 99 | 100 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 百度新闻热搜词抓取 2 | 3 | 原抓取网址为:[http://news.baidu.com/n?cmd=1&class=reci](http://news.baidu.com/n?cmd=1&class=reci) 4 | 5 | Github代码:[点击访问](https://github.com/gaussic/baidu_hot_words) 6 | 7 | #### 接口与参数 8 | 9 | 接口的 `base_url` 为 [http://news.baidu.com/n?m=rddata&v=hot_word](http://news.baidu.com/n?m=rddata&v=hot_word) 10 | 11 | 带两个参数 12 | 13 | - type:0(全部)、2(国内)、1(国际)、5(社会)、14(军事)、6(财经)、10(汽车)、8(科技)、4(娱乐)、3(体育) 14 | - date:格式为 20160703、20160704、20160705,以此类推 15 | 16 | 17 | 18 | #### 使用 requests 抓取关键词数据: 19 | 20 | ```python 21 | import requests 22 | from bs4 import BeautifulSoup 23 | 24 | # 基本Url 25 | base_url = 'http://news.baidu.com/n?m=rddata&v=hot_word' 26 | hot_type = '0' 27 | 28 | parameters = {'type': hot_type} 29 | 30 | # 获取 JSON 数据 31 | r = requests.get(base_url, params=parameters) 32 | print(r.url) 33 | 34 | hot_words_dict = r.json() 35 | 36 | # 输出热搜关键词 37 | for hot_word in hot_words_dict.get('data'): 38 | print(hot_word.get('query_word')) 39 | ``` 40 | 41 | 输出结果: 42 | 43 | ``` 44 | http://news.baidu.com/n?m=rddata&v=hot_word&type=0 45 | 习近平回信勉励[br]乌兰牧骑队员 46 | 习近平致丝路沿线民间合作网络论坛贺信 47 | 头颅[br]移植手术成功 48 | 济州岛[br]迎中旅游团 49 | 2018[br]全球强震或增 50 | 趴折叠床[br]辅导学生 51 | 国产直升机试飞成功 52 | 中国在太平洋岛国投资基建 53 | 无人售货纸箱亮相西南大学 54 | 惠普CEO惠特曼将于明年初离职 55 | 台风“玛娃”致广东多地暴雨 广州深圳等多市停课 56 | 制鞋机器人问世!8小时能制造600双耐克鞋 57 | 试飞危险吗?C919首飞机长这样说 58 | 陕西彬县(塌陷)发生3.2级地震 震源深度0千米 59 | 欲入中国籍替征战奥运 这位华裔美女闪亮全运赛场 60 | 中国首个火星模拟基地总体方案敲定 总投资逾4亿元 61 | 多个城市暂停投放共享单车 摩拜与ofo回应 62 | 教师因"鸡汤文"成网红:从不崇拜所谓的高考状元 63 | 飓风"哈维"导致美国得州近30万居民断电 暂无伤亡 64 | 警惕!骗子盯上共享单车 通过假冒客服平台诈骗 65 | 台湾年轻人对台失去信心转赴大陆:大陆才是未来 66 | 呼和浩特街头现大量神翻译店名 67 | 农业部回应食物农药残留 68 | 农业部回应:欧洲“毒鸡蛋”未进入中国内地市场 69 | 日战机对华紧急起飞数激增 4架战机对1架中国飞机 70 | 全国将建2442公里红色旅游公路 71 | NHK自揭731细菌战暴行:首指日本医学界之罪 72 | 大熊猫国家公园正式获批 总面积达27134平方公里 73 | 76集团军特战部队在高原展开陆空联合演习 74 | 江西挖出巨型阴沉木 75 | ``` 76 | 77 | #### 添加日期参数 78 | 79 | 日期格式为 `YYYYMMDD`,如 20171122 80 | 81 | ```python 82 | hot_type = '2' # 国内 83 | hot_date = '20171122' 84 | 85 | parameters = {'type': hot_type, 'date': hot_date} 86 | 87 | # 获取 JSON 数据 88 | r = requests.get(base_url, params=parameters) 89 | print(r.url) 90 | 91 | hot_words_dict = r.json() 92 | 93 | # 输出热搜关键词 94 | for hot_word in hot_words_dict.get('data'): 95 | print(hot_word.get('query_word')) 96 | ``` 97 | 98 | 输出结果: 99 | 100 | ``` 101 | http://news.baidu.com/n?m=rddata&v=hot_word&type=2&date=20160705 102 | 海南最牛副局长被双开 103 | 婚姻登记下月起免费 104 | 记者访中央机关食堂 105 | 高铁要调价了 106 | 男子抓巨大"土豪金"鱼 107 | 河南挖出500年前古墓 108 | 大老虎自曝与女星情史 109 | 南京南站男子被卡身亡 110 | 香港将迎首位女特首 111 | 女子让儿子停课晒太阳 112 | 济南公安下属企业放贷 113 | 女镇长拍写真走红 114 | 24省下月同日省考 115 | 厅长欲掏2亿买副省长 116 | 中介为卖房和客户结婚 117 | 东北最牛大学停飞机 118 | 上海虹口体育场火灾 119 | 济南最牛钉子户被拆 120 | 复旦大学实验室爆炸 121 | 日本最美女大学生 122 | 北京未来15年规划 123 | 女子无钱打车报警 124 | 起底聊城讨债团队 125 | 韩称遭中国网络攻击 126 | 山东现国内最大金矿 127 | 最牛妈妈两胎生五子 128 | 护士怒怼医托 129 | 3名中国人在菲遭绑架 130 | 白洋淀搬迁每亩补6万 131 | 习近平会见美国国务卿 132 | ``` 133 | 134 | #### 按关键词抓取新闻 135 | 136 | 基本url为 [http://news.baidu.com/ns?tn=news](http://news.baidu.com/ns?tn=news),接参数word字段。 137 | 138 | ```python 139 | query_word = '香港将迎首位女特首' 140 | news_base_url = 'http://news.baidu.com/ns?tn=news' 141 | 142 | parameters = {'word': query_word} 143 | 144 | # 获取 JSON 数据 145 | r = requests.get(news_base_url, params=parameters) 146 | print(r.url) 147 | 148 | soup = BeautifulSoup(r.text, 'lxml') # lxml可以换成其他解析库 149 | news_html_list = soup.select('div.result') 150 | news_list = [] 151 | for news_html in news_html_list: 152 | news = {} 153 | news['标题'] = news_html.a.get_text().strip() 154 | news['链接'] = news_html.a['href'] 155 | source = news_html.find('p', 'c-author').get_text().strip().replace('\xa0\xa0', ' ').split(' ') 156 | news['来源'] = source[0] 157 | news['发布日期'] = source[1] 158 | 159 | news_list.append(news) 160 | 161 | import json 162 | for news in news_list: 163 | print(json.dumps(news, ensure_ascii=False)) 164 | ``` 165 | 166 | 输出结果: 167 | 168 | ```bson 169 | {"标题": "香港将迎首位女特首:出身贫寒 曾因考第四名痛哭一晚}_《参考消息...", "链接": "http://news.163.com/17/0327/17/CGI6I4RV00018AOQ.html", "来源": "网易", "发布日期": "2017年03月27日"} 170 | {"标题": "香港将迎来首位女特首:出身贫寒 曾批“占中”", "链接": "http://news.china.com/domestic/945/20170327/30360029.html", "来源": "中华网", "发布日期": "2017年03月27日"} 171 | {"标题": "香港首位女特首被评\"实干派\" 曾批\"占中\"乱港", "链接": "http://news.163.com/17/0326/22/CGG4QMGM0001875N.html", "来源": "网易", "发布日期": "2017年03月26日"} 172 | {"标题": "香港或迎首位女特首 林郑月娥长子剑桥毕业小米任职", "链接": "http://www.donews.com/news/detail/4/2949453.html", "来源": "DoNews", "发布日期": "2017年03月26日"} 173 | {"标题": "香港将迎来首位女特首 林郑月娥对港独态度强硬", "链接": "http://www.cnbzol.com/news/20170327114934.htm", "来源": "巴中在线", "发布日期": "2017年03月27日"} 174 | {"标题": "香港将迎首位女特首 林郑月娥个人简历资料照片(图)", "链接": "http://www.mnw.cn/news/china/1645293-2.html", "来源": "闽南网", "发布日期": "2017年03月27日"} 175 | {"标题": "香港迎首位女特首", "链接": "http://www.shuyang.tv/news/china/2017-03-27/208931.html", "来源": "沭阳网", "发布日期": "2017年03月27日"} 176 | {"标题": "香港迎来首位女特首林郑月娥:寒门中苦读 作风果断民望高", "链接": "http://n.cztv.com/news/12468870.html", "来源": "新蓝网", "发布日期": "2017年03月26日"} 177 | {"标题": "香港回归20年来将有首位女特首", "链接": "http://news.sina.com.cn/o/2017-03-27/060433853302.shtml", "来源": "新浪新闻", "发布日期": "2017年03月27日"} 178 | {"标题": "她是香港回归以来首位女特首 将加强市民对特区政府的信任作为施政...", "链接": "http://news.163.com/17/0702/00/COA3HA1B00018AOP.html", "来源": "网易", "发布日期": "2017年07月02日"} 179 | ``` 180 | -------------------------------------------------------------------------------- /baidu_hot_words.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": { 6 | "collapsed": true 7 | }, 8 | "source": [ 9 | "## 百度新闻热搜词抓取\n", 10 | "\n", 11 | "原抓取网址为:[http://news.baidu.com/n?cmd=1&class=reci](http://news.baidu.com/n?cmd=1&class=reci)\n", 12 | "\n", 13 | "Github代码:[点击访问](https://github.com/gaussic/baidu_hot_words)\n", 14 | "\n", 15 | "#### 接口与参数\n", 16 | "\n", 17 | "接口的 `base_url` 为 [http://news.baidu.com/n?m=rddata&v=hot_word](http://news.baidu.com/n?m=rddata&v=hot_word)\n", 18 | "\n", 19 | "带两个参数\n", 20 | "\n", 21 | "- type:0(全部)、2(国内)、1(国际)、5(社会)、14(军事)、6(财经)、10(汽车)、8(科技)、4(娱乐)、3(体育)\n", 22 | "- date:格式为 20160703、20160704、20160705,以此类推\n", 23 | "\n", 24 | "#### 使用 requests 抓取关键词数据:" 25 | ] 26 | }, 27 | { 28 | "cell_type": "code", 29 | "execution_count": 1, 30 | "metadata": {}, 31 | "outputs": [], 32 | "source": [ 33 | "import requests \n", 34 | "from bs4 import BeautifulSoup" 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "execution_count": 2, 40 | "metadata": {}, 41 | "outputs": [ 42 | { 43 | "name": "stdout", 44 | "output_type": "stream", 45 | "text": [ 46 | "http://news.baidu.com/n?m=rddata&v=hot_word&type=0\n", 47 | "习近平回信勉励[br]乌兰牧骑队员\n", 48 | "习近平致丝路沿线民间合作网络论坛贺信\n", 49 | "头颅[br]移植手术成功\n", 50 | "济州岛[br]迎中旅游团\n", 51 | "2018[br]全球强震或增\n", 52 | "趴折叠床[br]辅导学生\n", 53 | "国产直升机试飞成功\n", 54 | "中国在太平洋岛国投资基建\n", 55 | "无人售货纸箱亮相西南大学\n", 56 | "惠普CEO惠特曼将于明年初离职\n", 57 | "台风“玛娃”致广东多地暴雨 广州深圳等多市停课\n", 58 | "制鞋机器人问世!8小时能制造600双耐克鞋\n", 59 | "试飞危险吗?C919首飞机长这样说\n", 60 | "陕西彬县(塌陷)发生3.2级地震 震源深度0千米\n", 61 | "欲入中国籍替征战奥运 这位华裔美女闪亮全运赛场\n", 62 | "中国首个火星模拟基地总体方案敲定 总投资逾4亿元\n", 63 | "多个城市暂停投放共享单车 摩拜与ofo回应\n", 64 | "教师因\"鸡汤文\"成网红:从不崇拜所谓的高考状元\n", 65 | "飓风\"哈维\"导致美国得州近30万居民断电 暂无伤亡\n", 66 | "警惕!骗子盯上共享单车 通过假冒客服平台诈骗\n", 67 | "台湾年轻人对台失去信心转赴大陆:大陆才是未来\n", 68 | "呼和浩特街头现大量神翻译店名\n", 69 | "农业部回应食物农药残留\n", 70 | "农业部回应:欧洲“毒鸡蛋”未进入中国内地市场\n", 71 | "日战机对华紧急起飞数激增 4架战机对1架中国飞机\n", 72 | "全国将建2442公里红色旅游公路\n", 73 | "NHK自揭731细菌战暴行:首指日本医学界之罪\n", 74 | "大熊猫国家公园正式获批 总面积达27134平方公里\n", 75 | "76集团军特战部队在高原展开陆空联合演习\n", 76 | "江西挖出巨型阴沉木\n" 77 | ] 78 | } 79 | ], 80 | "source": [ 81 | "# 基本Url\n", 82 | "base_url = 'http://news.baidu.com/n?m=rddata&v=hot_word' \n", 83 | "hot_type = '0'\n", 84 | "\n", 85 | "parameters = {'type': hot_type}\n", 86 | "\n", 87 | "# 获取 JSON 数据\n", 88 | "r = requests.get(base_url, params=parameters) \n", 89 | "print(r.url)\n", 90 | "\n", 91 | "hot_words_dict = r.json()\n", 92 | "\n", 93 | "# 输出热搜关键词\n", 94 | "for hot_word in hot_words_dict.get('data'): \n", 95 | " print(hot_word.get('query_word'))" 96 | ] 97 | }, 98 | { 99 | "cell_type": "markdown", 100 | "metadata": {}, 101 | "source": [ 102 | "### 添加日期参数\n", 103 | "\n", 104 | "日期格式为 YYYYMMDD,如 20171122" 105 | ] 106 | }, 107 | { 108 | "cell_type": "code", 109 | "execution_count": 3, 110 | "metadata": { 111 | "scrolled": false 112 | }, 113 | "outputs": [ 114 | { 115 | "name": "stdout", 116 | "output_type": "stream", 117 | "text": [ 118 | "http://news.baidu.com/n?m=rddata&v=hot_word&date=20171122&type=2\n", 119 | "海南最牛副局长被双开\n", 120 | "婚姻登记下月起免费\n", 121 | " 记者访中央机关食堂\n", 122 | "高铁要调价了\n", 123 | "男子抓巨大\"土豪金\"鱼\n", 124 | "河南挖出500年前古墓\n", 125 | "大老虎自曝与女星情史\n", 126 | "南京南站男子被卡身亡\n", 127 | "香港将迎首位女特首\n", 128 | "女子让儿子停课晒太阳\n", 129 | "济南公安下属企业放贷\n", 130 | "女镇长拍写真走红\n", 131 | "24省下月同日省考\n", 132 | "厅长欲掏2亿买副省长\n", 133 | "中介为卖房和客户结婚\n", 134 | "东北最牛大学停飞机\n", 135 | "上海虹口体育场火灾\n", 136 | "济南最牛钉子户被拆\n", 137 | "复旦大学实验室爆炸\n", 138 | "日本最美女大学生\n", 139 | "北京未来15年规划\n", 140 | "女子无钱打车报警\n", 141 | "起底聊城讨债团队\n", 142 | "韩称遭中国网络攻击\n", 143 | "山东现国内最大金矿\n", 144 | "最牛妈妈两胎生五子\n", 145 | "护士怒怼医托\n", 146 | "3名中国人在菲遭绑架\n", 147 | "白洋淀搬迁每亩补6万\n", 148 | "习近平会见美国国务卿\n" 149 | ] 150 | } 151 | ], 152 | "source": [ 153 | "hot_type = '2' # 国内\n", 154 | "hot_date = '20171122'\n", 155 | "\n", 156 | "parameters = {'type': hot_type, 'date': hot_date}\n", 157 | "\n", 158 | "# 获取 JSON 数据\n", 159 | "r = requests.get(base_url, params=parameters) \n", 160 | "print(r.url)\n", 161 | "\n", 162 | "hot_words_dict = r.json()\n", 163 | "\n", 164 | "# 输出热搜关键词\n", 165 | "for hot_word in hot_words_dict.get('data'): \n", 166 | " print(hot_word.get('query_word'))" 167 | ] 168 | }, 169 | { 170 | "cell_type": "markdown", 171 | "metadata": {}, 172 | "source": [ 173 | "### 按关键词抓取新闻\n", 174 | "\n", 175 | "基本url为 [http://news.baidu.com/ns?tn=news](http://news.baidu.com/ns?tn=news), 接参数 word 字段。" 176 | ] 177 | }, 178 | { 179 | "cell_type": "code", 180 | "execution_count": 4, 181 | "metadata": {}, 182 | "outputs": [ 183 | { 184 | "name": "stdout", 185 | "output_type": "stream", 186 | "text": [ 187 | "http://news.baidu.com/ns?tn=news&word=%E9%A6%99%E6%B8%AF%E5%B0%86%E8%BF%8E%E9%A6%96%E4%BD%8D%E5%A5%B3%E7%89%B9%E9%A6%96\n", 188 | "{\"链接\": \"http://news.163.com/17/0327/17/CGI6I4RV00018AOQ.html\", \"发布日期\": \"2017年03月27日\", \"标题\": \"香港将迎首位女特首:出身贫寒 曾因考第四名痛哭一晚}_《参考消息...\", \"来源\": \"网易\"}\n", 189 | "{\"链接\": \"http://news.china.com/domestic/945/20170327/30360029.html\", \"发布日期\": \"2017年03月27日\", \"标题\": \"香港将迎来首位女特首:出身贫寒 曾批“占中”\", \"来源\": \"中华网\"}\n", 190 | "{\"链接\": \"http://news.163.com/17/0326/22/CGG4QMGM0001875N.html\", \"发布日期\": \"2017年03月26日\", \"标题\": \"香港首位女特首被评\\\"实干派\\\" 曾批\\\"占中\\\"乱港\", \"来源\": \"网易\"}\n", 191 | "{\"链接\": \"http://www.donews.com/news/detail/4/2949453.html\", \"发布日期\": \"2017年03月26日\", \"标题\": \"香港或迎首位女特首 林郑月娥长子剑桥毕业小米任职\", \"来源\": \"DoNews\"}\n", 192 | "{\"链接\": \"http://www.cnbzol.com/news/20170327114934.htm\", \"发布日期\": \"2017年03月27日\", \"标题\": \"香港将迎来首位女特首 林郑月娥对港独态度强硬\", \"来源\": \"巴中在线\"}\n", 193 | "{\"链接\": \"http://www.mnw.cn/news/china/1645293-2.html\", \"发布日期\": \"2017年03月27日\", \"标题\": \"香港将迎首位女特首 林郑月娥个人简历资料照片(图)\", \"来源\": \"闽南网\"}\n", 194 | "{\"链接\": \"http://www.shuyang.tv/news/china/2017-03-27/208931.html\", \"发布日期\": \"2017年03月27日\", \"标题\": \"香港迎首位女特首\", \"来源\": \"沭阳网\"}\n", 195 | "{\"链接\": \"http://n.cztv.com/news/12468870.html\", \"发布日期\": \"2017年03月26日\", \"标题\": \"香港迎来首位女特首林郑月娥:寒门中苦读 作风果断民望高\", \"来源\": \"新蓝网\"}\n", 196 | "{\"链接\": \"http://news.sina.com.cn/o/2017-03-27/060433853302.shtml\", \"发布日期\": \"2017年03月27日\", \"标题\": \"香港回归20年来将有首位女特首\", \"来源\": \"新浪新闻\"}\n", 197 | "{\"链接\": \"http://news.163.com/17/0702/00/COA3HA1B00018AOP.html\", \"发布日期\": \"2017年07月02日\", \"标题\": \"她是香港回归以来首位女特首 将加强市民对特区政府的信任作为施政...\", \"来源\": \"网易\"}\n" 198 | ] 199 | } 200 | ], 201 | "source": [ 202 | "query_word = '香港将迎首位女特首' \n", 203 | "news_base_url = 'http://news.baidu.com/ns?tn=news'\n", 204 | "\n", 205 | "parameters = {'word': query_word}\n", 206 | "\n", 207 | "# 获取 JSON 数据\n", 208 | "r = requests.get(news_base_url, params=parameters) \n", 209 | "print(r.url)\n", 210 | "\n", 211 | "soup = BeautifulSoup(r.text, 'lxml') # lxml可以换成其他解析库\n", 212 | "news_html_list = soup.select('div.result') \n", 213 | "news_list = [] \n", 214 | "for news_html in news_html_list: \n", 215 | " news = {}\n", 216 | " news['标题'] = news_html.a.get_text().strip()\n", 217 | " news['链接'] = news_html.a['href']\n", 218 | " source = news_html.find('p', 'c-author').get_text().strip().replace('\\xa0\\xa0', ' ').split(' ')\n", 219 | " news['来源'] = source[0]\n", 220 | " news['发布日期'] = source[1]\n", 221 | "\n", 222 | " news_list.append(news)\n", 223 | "\n", 224 | "import json\n", 225 | "for news in news_list:\n", 226 | " print(json.dumps(news, ensure_ascii=False))" 227 | ] 228 | } 229 | ], 230 | "metadata": { 231 | "kernelspec": { 232 | "display_name": "Python 3", 233 | "language": "python", 234 | "name": "python3" 235 | }, 236 | "language_info": { 237 | "codemirror_mode": { 238 | "name": "ipython", 239 | "version": 3 240 | }, 241 | "file_extension": ".py", 242 | "mimetype": "text/x-python", 243 | "name": "python", 244 | "nbconvert_exporter": "python", 245 | "pygments_lexer": "ipython3", 246 | "version": "3.5.3" 247 | } 248 | }, 249 | "nbformat": 4, 250 | "nbformat_minor": 1 251 | } 252 | -------------------------------------------------------------------------------- /.ipynb_checkpoints/baidu_hot_words-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": { 6 | "collapsed": true 7 | }, 8 | "source": [ 9 | "## 百度新闻热搜词抓取\n", 10 | "\n", 11 | "原抓取网址为:[http://news.baidu.com/n?cmd=1&class=reci](http://news.baidu.com/n?cmd=1&class=reci)\n", 12 | "\n", 13 | "Github代码:[点击访问](https://github.com/gaussic/baidu_hot_words)\n", 14 | "\n", 15 | "#### 接口与参数\n", 16 | "\n", 17 | "接口的 `base_url` 为 [http://news.baidu.com/n?m=rddata&v=hot_word](http://news.baidu.com/n?m=rddata&v=hot_word)\n", 18 | "\n", 19 | "带两个参数\n", 20 | "\n", 21 | "- type:0(全部)、2(国内)、1(国际)、5(社会)、14(军事)、6(财经)、10(汽车)、8(科技)、4(娱乐)、3(体育)\n", 22 | "- date:格式为 20160703、20160704、20160705,以此类推\n", 23 | "\n", 24 | "#### 使用 requests 抓取关键词数据:" 25 | ] 26 | }, 27 | { 28 | "cell_type": "code", 29 | "execution_count": 1, 30 | "metadata": {}, 31 | "outputs": [], 32 | "source": [ 33 | "import requests \n", 34 | "from bs4 import BeautifulSoup" 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "execution_count": 2, 40 | "metadata": {}, 41 | "outputs": [ 42 | { 43 | "name": "stdout", 44 | "output_type": "stream", 45 | "text": [ 46 | "http://news.baidu.com/n?m=rddata&v=hot_word&type=0\n", 47 | "习近平回信勉励[br]乌兰牧骑队员\n", 48 | "习近平致丝路沿线民间合作网络论坛贺信\n", 49 | "头颅[br]移植手术成功\n", 50 | "济州岛[br]迎中旅游团\n", 51 | "2018[br]全球强震或增\n", 52 | "趴折叠床[br]辅导学生\n", 53 | "国产直升机试飞成功\n", 54 | "中国在太平洋岛国投资基建\n", 55 | "无人售货纸箱亮相西南大学\n", 56 | "惠普CEO惠特曼将于明年初离职\n", 57 | "台风“玛娃”致广东多地暴雨 广州深圳等多市停课\n", 58 | "制鞋机器人问世!8小时能制造600双耐克鞋\n", 59 | "试飞危险吗?C919首飞机长这样说\n", 60 | "陕西彬县(塌陷)发生3.2级地震 震源深度0千米\n", 61 | "欲入中国籍替征战奥运 这位华裔美女闪亮全运赛场\n", 62 | "中国首个火星模拟基地总体方案敲定 总投资逾4亿元\n", 63 | "多个城市暂停投放共享单车 摩拜与ofo回应\n", 64 | "教师因\"鸡汤文\"成网红:从不崇拜所谓的高考状元\n", 65 | "飓风\"哈维\"导致美国得州近30万居民断电 暂无伤亡\n", 66 | "警惕!骗子盯上共享单车 通过假冒客服平台诈骗\n", 67 | "台湾年轻人对台失去信心转赴大陆:大陆才是未来\n", 68 | "呼和浩特街头现大量神翻译店名\n", 69 | "农业部回应食物农药残留\n", 70 | "农业部回应:欧洲“毒鸡蛋”未进入中国内地市场\n", 71 | "日战机对华紧急起飞数激增 4架战机对1架中国飞机\n", 72 | "全国将建2442公里红色旅游公路\n", 73 | "NHK自揭731细菌战暴行:首指日本医学界之罪\n", 74 | "大熊猫国家公园正式获批 总面积达27134平方公里\n", 75 | "76集团军特战部队在高原展开陆空联合演习\n", 76 | "江西挖出巨型阴沉木\n" 77 | ] 78 | } 79 | ], 80 | "source": [ 81 | "# 基本Url\n", 82 | "base_url = 'http://news.baidu.com/n?m=rddata&v=hot_word' \n", 83 | "hot_type = '0'\n", 84 | "\n", 85 | "parameters = {'type': hot_type}\n", 86 | "\n", 87 | "# 获取 JSON 数据\n", 88 | "r = requests.get(base_url, params=parameters) \n", 89 | "print(r.url)\n", 90 | "\n", 91 | "hot_words_dict = r.json()\n", 92 | "\n", 93 | "# 输出热搜关键词\n", 94 | "for hot_word in hot_words_dict.get('data'): \n", 95 | " print(hot_word.get('query_word'))" 96 | ] 97 | }, 98 | { 99 | "cell_type": "markdown", 100 | "metadata": {}, 101 | "source": [ 102 | "### 添加日期参数\n", 103 | "\n", 104 | "日期格式为 YYYYMMDD,如 20171122" 105 | ] 106 | }, 107 | { 108 | "cell_type": "code", 109 | "execution_count": 3, 110 | "metadata": { 111 | "scrolled": false 112 | }, 113 | "outputs": [ 114 | { 115 | "name": "stdout", 116 | "output_type": "stream", 117 | "text": [ 118 | "http://news.baidu.com/n?m=rddata&v=hot_word&date=20171122&type=2\n", 119 | "海南最牛副局长被双开\n", 120 | "婚姻登记下月起免费\n", 121 | " 记者访中央机关食堂\n", 122 | "高铁要调价了\n", 123 | "男子抓巨大\"土豪金\"鱼\n", 124 | "河南挖出500年前古墓\n", 125 | "大老虎自曝与女星情史\n", 126 | "南京南站男子被卡身亡\n", 127 | "香港将迎首位女特首\n", 128 | "女子让儿子停课晒太阳\n", 129 | "济南公安下属企业放贷\n", 130 | "女镇长拍写真走红\n", 131 | "24省下月同日省考\n", 132 | "厅长欲掏2亿买副省长\n", 133 | "中介为卖房和客户结婚\n", 134 | "东北最牛大学停飞机\n", 135 | "上海虹口体育场火灾\n", 136 | "济南最牛钉子户被拆\n", 137 | "复旦大学实验室爆炸\n", 138 | "日本最美女大学生\n", 139 | "北京未来15年规划\n", 140 | "女子无钱打车报警\n", 141 | "起底聊城讨债团队\n", 142 | "韩称遭中国网络攻击\n", 143 | "山东现国内最大金矿\n", 144 | "最牛妈妈两胎生五子\n", 145 | "护士怒怼医托\n", 146 | "3名中国人在菲遭绑架\n", 147 | "白洋淀搬迁每亩补6万\n", 148 | "习近平会见美国国务卿\n" 149 | ] 150 | } 151 | ], 152 | "source": [ 153 | "hot_type = '2' # 国内\n", 154 | "hot_date = '20171122'\n", 155 | "\n", 156 | "parameters = {'type': hot_type, 'date': hot_date}\n", 157 | "\n", 158 | "# 获取 JSON 数据\n", 159 | "r = requests.get(base_url, params=parameters) \n", 160 | "print(r.url)\n", 161 | "\n", 162 | "hot_words_dict = r.json()\n", 163 | "\n", 164 | "# 输出热搜关键词\n", 165 | "for hot_word in hot_words_dict.get('data'): \n", 166 | " print(hot_word.get('query_word'))" 167 | ] 168 | }, 169 | { 170 | "cell_type": "markdown", 171 | "metadata": {}, 172 | "source": [ 173 | "### 按关键词抓取新闻\n", 174 | "\n", 175 | "基本url为 [http://news.baidu.com/ns?tn=news](http://news.baidu.com/ns?tn=news), 接参数 word 字段。" 176 | ] 177 | }, 178 | { 179 | "cell_type": "code", 180 | "execution_count": 4, 181 | "metadata": {}, 182 | "outputs": [ 183 | { 184 | "name": "stdout", 185 | "output_type": "stream", 186 | "text": [ 187 | "http://news.baidu.com/ns?tn=news&word=%E9%A6%99%E6%B8%AF%E5%B0%86%E8%BF%8E%E9%A6%96%E4%BD%8D%E5%A5%B3%E7%89%B9%E9%A6%96\n", 188 | "{\"链接\": \"http://news.163.com/17/0327/17/CGI6I4RV00018AOQ.html\", \"发布日期\": \"2017年03月27日\", \"标题\": \"香港将迎首位女特首:出身贫寒 曾因考第四名痛哭一晚}_《参考消息...\", \"来源\": \"网易\"}\n", 189 | "{\"链接\": \"http://news.china.com/domestic/945/20170327/30360029.html\", \"发布日期\": \"2017年03月27日\", \"标题\": \"香港将迎来首位女特首:出身贫寒 曾批“占中”\", \"来源\": \"中华网\"}\n", 190 | "{\"链接\": \"http://news.163.com/17/0326/22/CGG4QMGM0001875N.html\", \"发布日期\": \"2017年03月26日\", \"标题\": \"香港首位女特首被评\\\"实干派\\\" 曾批\\\"占中\\\"乱港\", \"来源\": \"网易\"}\n", 191 | "{\"链接\": \"http://www.donews.com/news/detail/4/2949453.html\", \"发布日期\": \"2017年03月26日\", \"标题\": \"香港或迎首位女特首 林郑月娥长子剑桥毕业小米任职\", \"来源\": \"DoNews\"}\n", 192 | "{\"链接\": \"http://www.cnbzol.com/news/20170327114934.htm\", \"发布日期\": \"2017年03月27日\", \"标题\": \"香港将迎来首位女特首 林郑月娥对港独态度强硬\", \"来源\": \"巴中在线\"}\n", 193 | "{\"链接\": \"http://www.mnw.cn/news/china/1645293-2.html\", \"发布日期\": \"2017年03月27日\", \"标题\": \"香港将迎首位女特首 林郑月娥个人简历资料照片(图)\", \"来源\": \"闽南网\"}\n", 194 | "{\"链接\": \"http://www.shuyang.tv/news/china/2017-03-27/208931.html\", \"发布日期\": \"2017年03月27日\", \"标题\": \"香港迎首位女特首\", \"来源\": \"沭阳网\"}\n", 195 | "{\"链接\": \"http://n.cztv.com/news/12468870.html\", \"发布日期\": \"2017年03月26日\", \"标题\": \"香港迎来首位女特首林郑月娥:寒门中苦读 作风果断民望高\", \"来源\": \"新蓝网\"}\n", 196 | "{\"链接\": \"http://news.sina.com.cn/o/2017-03-27/060433853302.shtml\", \"发布日期\": \"2017年03月27日\", \"标题\": \"香港回归20年来将有首位女特首\", \"来源\": \"新浪新闻\"}\n", 197 | "{\"链接\": \"http://news.163.com/17/0702/00/COA3HA1B00018AOP.html\", \"发布日期\": \"2017年07月02日\", \"标题\": \"她是香港回归以来首位女特首 将加强市民对特区政府的信任作为施政...\", \"来源\": \"网易\"}\n" 198 | ] 199 | } 200 | ], 201 | "source": [ 202 | "query_word = '香港将迎首位女特首' \n", 203 | "news_base_url = 'http://news.baidu.com/ns?tn=news'\n", 204 | "\n", 205 | "parameters = {'word': query_word}\n", 206 | "\n", 207 | "# 获取 JSON 数据\n", 208 | "r = requests.get(news_base_url, params=parameters) \n", 209 | "print(r.url)\n", 210 | "\n", 211 | "soup = BeautifulSoup(r.text, 'lxml') # lxml可以换成其他解析库\n", 212 | "news_html_list = soup.select('div.result') \n", 213 | "news_list = [] \n", 214 | "for news_html in news_html_list: \n", 215 | " news = {}\n", 216 | " news['标题'] = news_html.a.get_text().strip()\n", 217 | " news['链接'] = news_html.a['href']\n", 218 | " source = news_html.find('p', 'c-author').get_text().strip().replace('\\xa0\\xa0', ' ').split(' ')\n", 219 | " news['来源'] = source[0]\n", 220 | " news['发布日期'] = source[1]\n", 221 | "\n", 222 | " news_list.append(news)\n", 223 | "\n", 224 | "import json\n", 225 | "for news in news_list:\n", 226 | " print(json.dumps(news, ensure_ascii=False))" 227 | ] 228 | } 229 | ], 230 | "metadata": { 231 | "kernelspec": { 232 | "display_name": "Python 3", 233 | "language": "python", 234 | "name": "python3" 235 | }, 236 | "language_info": { 237 | "codemirror_mode": { 238 | "name": "ipython", 239 | "version": 3 240 | }, 241 | "file_extension": ".py", 242 | "mimetype": "text/x-python", 243 | "name": "python", 244 | "nbconvert_exporter": "python", 245 | "pygments_lexer": "ipython3", 246 | "version": "3.5.3" 247 | } 248 | }, 249 | "nbformat": 4, 250 | "nbformat_minor": 1 251 | } 252 | --------------------------------------------------------------------------------