# coding: utf-8
# In[63]:
import requests
from pyquery import PyQuery as pq
response = requests.get(url='http://news.sina.com.cn/china/')
response.encoding = 'utf-8'
html = response.text
doc = pq(html)
news_list = []
for item in doc('.news-item').items():
news_url = item.find('h2 > a').attr('href')
if news_url:
news_list.append(get_article(news_url))
def get_article(news_url):
response = requests.get(url=news_url)
response.encoding = 'utf-8'
html = response.text
doc = pq(html)
msg = {}
msg['title'] = doc.find('#artibodyTitle').text()
msg['content'] = ''.join(doc.find('#artibody > p').text().split())
msg['time'] = doc.find('#navtimeSource').text()
msg['keyword'] = doc.find('.article-keywords > a').text()
return msg
news_list
# In[64]:
import pandas as pd
df = pd.DataFrame(news_list)
df.head()
# In[65]:
df['keyword'] = df['keyword'].map(lambda e : e.split())
df.head()
# In[66]:
df['time'].map(lambda e : e.split()).head()
# In[67]:
df['time'].str.extract('(\d+年\d+月\d+日\d+:\d+)\s+(\w+)').head()
# In[68]:
df[['datetime', 'from']] = df['time'].str.extract('(\d+年\d+月\d+日\d+:\d+)\s+(\w+)')
df.head()
# In[69]:
df['datetime'] = pd.to_datetime(df['datetime'], format = '%Y年%m月%d日%H:%M')
df['datetime'].head()
# In[70]:
df['datetime'].map(lambda e : (e.year, e.month, e.day)).head()
# In[71]:
del df['time']
df.head()
# In[72]:
df = df[['from', 'title', 'content', 'keyword', 'datetime']]
# In[73]:
df.to_excel('news.xlsx')
python - 采集 新浪新闻-国内-最新消息 转为xlsx
原创
©著作权归作者所有:来自51CTO博客作者peerslee的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Python爬虫:清华大学新闻爬虫的实现
这个爬虫功能强大,代码简介,是爬虫学习入门的不二之选。该文章将一步一步但你探索其中奥秘,解决你在这方面的困惑。
python 爬虫 请求头 jieba -
采集新浪微博
微博有反爬虫机制,这是一种比较省力的方式。
采集 新浪微博 github -
Python抓取新浪新闻数据(三)
Python抓取新浪新闻数据
Python抓取新浪新闻数据 -
Python如何快速实现新闻采集
作为一名资深技术员,我是经常使用爬虫工具来实现目标快速采集,下面就是我通过Python语言快速采集新闻的代码以及解释,希望能够给大家带来帮助。
html 数据库 百度 数据采集 大数据分析