㈠ python3 怎么爬取新闻网站
从门户网站爬取新闻,将新闻标题,作者,时间,内容保存到本地txt中。
importre#正则表达式
importbs4#BeautifulSoup4解析模块
importurllib2#网络访问模块
importNews#自己定义的新闻结构
importcodecs#解决编码问题的关键,使用codecs.open打开文件
importsys#1解决不同页面编码问题
其中bs4需要自己装一下,安装方法可以参考:Windows命令行下pip安装python whl包
程序:
#coding=utf-8
importre#正则表达式
importbs4#BeautifulSoup4解析模块
importurllib2#网络访问模块
importNews#自己定义的新闻结构
importcodecs#解决编码问题的关键,使用codecs.open打开文件
importsys#1解决不同页面编码问题
reload(sys)#2
sys.setdefaultencoding('utf-8')#3
#从首页获取所有链接
defGetAllUrl(home):
html=urllib2.urlopen(home).read().decode('utf8')
soup=bs4.BeautifulSoup(html,'html.parser')
pattern='http://w+.jia..com/article/w+'
links=soup.find_all('a',href=re.compile(pattern))
forlinkinlinks:
url_set.add(link['href'])
defGetNews(url):
globalNewsCount,MaxNewsCount#全局记录新闻数量
whilelen(url_set)!=0:
try:
#获取链接
url=url_set.pop()
url_old.add(url)
#获取代码
html=urllib2.urlopen(url).read().decode('utf8')
#解析
soup=bs4.BeautifulSoup(html,'html.parser')
pattern='http://w+.jia..com/article/w+'#链接匹配规则
links=soup.find_all('a',href=re.compile(pattern))
#获取URL
forlinkinlinks:
iflink['href']notinurl_old:
url_set.add(link['href'])
#获取信息
article=News.News()
article.url=url#URL信息
page=soup.find('div',{'id':'page'})
article.title=page.find('h1').get_text()#标题信息
info=page.find('div',{'class':'article-info'})
article.author=info.find('a',{'class':'name'}).get_text()#作者信息
article.date=info.find('span',{'class':'time'}).get_text()#日期信息
article.about=page.find('blockquote').get_text()
pnode=page.find('div',{'class':'article-detail'}).find_all('p')
article.content=''
fornodeinpnode:#获取文章段落
article.content+=node.get_text()+' '#追加段落信息
SaveNews(article)
printNewsCount
break
exceptExceptionase:
print(e)
continue
else:
print(article.title)
NewsCount+=1
finally:
#判断数据是否收集完成
ifNewsCount==MaxNewsCount:
break
defSaveNews(Object):
file.write("【"+Object.title+"】"+" ")
file.write(Object.author+" "+Object.date+" ")
file.write(Object.content+" "+" ")
url_set=set()#url集合
url_old=set()#爬过的url集合
NewsCount=0
MaxNewsCount=3
home='http://jia..com/'#起始位置
GetAllUrl(home)
file=codecs.open("D:\test.txt","a+")#文件操作
forurlinurl_set:
GetNews(url)
#判断数据是否收集完成
ifNewsCount==MaxNewsCount:
break
file.close()
新闻文章结构
#coding:utf-8
#文章类定义
classNews(object):
def__init__(self):
self.url=None
self.title=None
self.author=None
self.date=None
self.about=None
self.content=None
对爬取的文章数量就行统计。
㈡ 在电脑上怎么搜索今日头条某个时间段的新闻
可以直接搜索日期查找。
㈢ 怎么找网站确切某一天的所有新闻
你好,以新浪为例,你进入新浪首页,可以看到不同的板块,有视频、新闻、大片、关注等等。想找新闻的话就点击新闻,进入新闻页面后,工具条下拉,可以看到首页回顾,在日历的图标处勾选自己想查找的日期就可以了。会弹出当天的网页来!
㈣ 写一个新闻阅读app,怎么从其他网站获取新闻
技术上来讲毫无难点。具体实现步骤如下:连接新闻网站的首页抓取HTML的内容解析抓取的HTML网页中的标题以及文章链接将所有标题显示在当前页,并将标题以及文章链接传到下一个页面抓取文章链接内容,和上页传来的标题一起显示在当前页看的再多不如动手一试由于快点看出效果,所以一切就从简了。直接建立Android项目,建立空的Activity。然后在你的layout的这个文件中加入一个按钮。比如像这样:然后在MainActivity里的onCreateView函数里加入一个方法,让它能点击你刚刚添加的按钮进入到下一个界面:1 rootView.findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {2 3 @Override4 public void onClick(View v) {5 // TODO Auto-generated method stub6 StartGeek();7 }8 9 });点击按钮会触发事件,执行StartGeek的方法,而StartGeek的方法则是跳到下一个Activity,1 private void StartGeek() {2 // TODO Auto-generated method stub3 Intent intent = new Intent();4 intent.setClass(this.getActivity(), GeekActivity.class);5 startActivity(intent);6 7 }StartGeek在这个Activity中,我们将访问网页,并从中获取HTML网页的内容,然后进行解析,获取新闻的标题以及链接,然后将新闻的标题显示在手机屏幕上,代码具体实现如下:1 ListView listview;2 Handler handler;3 List> data;4 5 final String CSDNURL = "/bi.htm"; 首先是变量的声明,至于变量名的问题请随意吐槽,因为一直在尝试拿各种网站的新闻内容,所以变量名是最初的,由于懒就一直没换-。 -,由于新闻网站的内容较多,所以用ListView比较合适,这样不会出现显示不全的情况。1 @Override2 protected void onCreate(Bundle savedInstanceState) {3 super.onCreate(savedInstanceState);4 setContentView(R.layout.activity_geek);5 handler = getHandler();6 ThreadStart();7 }1 6 7 12 13 activity_geek.xml接下来是onCreate方法,这里界面是activity_geek,然后调用两个方法,由于获取数据费时,所以又起了一个线程,当然比较好的方法是用异步线程来做,那样的话不仅可以不占用主线程,而且还可以很方便的加进度条什么的,相当好用,至于我为什么不用,当然是不会用了撒~1 private void ThreadStart() { 2 new Thread() { 3 public void run() { 4 Message msg = new Message(); 5 try { 6 data = getCsdnNetDate(); 7 msg.what = data.size(); 8 } catch (Exception e) { 9 e.printStackTrace();10 msg.what = -1;11 }12 handler.sendMessage(msg);13 }14 }.start(); 15 }ThreadStart这是新的线程,用于从网址获取我们想要的HTML文件,并将其传给handler处理。获取的函数方法是:1 data = getCsdnNetDate();1 private List> getCsdnNetDate() { 2 List> result = new ArrayList>(); 3 Document doc = http_get(CSDNURL); 4 Elements links = doc.select("h3>a"); 5 for(Element link: links) 6 { 7 Map map = new HashMap(); 8 map.put("title", link.attr("title")); 9 map.put("url", link.attr("abs:href"));10 result.add(map);11 }12 13 14 return result;15 }getCsdnNetDate1 Document doc = http_get(CSDNURL);1 private Document http_get(String url) { 2 Document doc=null; 3 try { 4 doc = Jsoup.connect(url) 5 .timeout(50000) 6 .get(); 7 } catch (IOException e) { 8 // TODO Auto-generated catch block 9 e.printStackTrace();10 }11 12 return doc;13 }http_get通过http_get方法中的Jsoup.connect来连接到网址,然后通过.get方法来获得HTML的文本信息,设定的连接时间是5S,获取到这个文本信息之后Jsoup还带有解析方法,通过link.attr("title")来获取HTML中的标签中的标题,然后再通过link.attr("abs:href")来获取新闻中的链接,由此,我们就获得了HTML中最为重要的两部分,也就是标题以及链接,事情到这里已经完成大半了,接下来就是将标题显示在当前页面,然后点击标题后,能将标题以及文中内容显示在下个页面,处理的方法如下:1 private Handler getHandler() { 2 return new Handler(){ 3 public void handleMessage(Message msg) { 4 if (msg.what arg0, View arg1, int arg2,12 long arg3) {13 Map map = data.get(arg2);14 String url = (String)(map.get("url"));15 String title = (String)(map.get("title"));16 Intent intent = new Intent();17 intent.putExtra("url", url);18 intent.putExtra("title", title);19 intent.setClass(GeekActivity.this, ContentActivity.class);20 startActivity(intent);21 }22 });23 }initListview这个方法会将获取的新闻标题显示在当前页面上,然后将新闻的标题以及链接保存下来,通过intent传到下一个Activity,也就是ContentActivity进行处理,并将标题以及内容显示在下一个页面中。代码的分下如下:1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 setContentView(R.layout.activity_content); 5 6 url = getIntent().getStringExtra("url"); 7 String title = getIntent().getStringExtra("title"); 8 TextView tv = (TextView)findViewById(R.id.title_content); 9 tv.setText(title);10 handler = getHandler();11 ThreadStart();12 }onCreateonCreate方法中获取上个Activity中传过来的url以及title,然后直接将新闻标题显示在当前页,然后剩余部分和上个方法差不太多,连接到网上,获取HTML内容,这次在方法中仅仅是解析的方法不同,毕竟这次解析是要获取内容嘛~代码如下:1 private List> getCsdnNetDate() { 2 List> result = new ArrayList>(); 3 Document doc = http_get(url); 4 Elements links = doc.select("div#Cnt-Main-Article->p"); 5 for(Element link: links) 6 { 7 Map map = new HashMap(); 8 map.put("title", link.text()); 9 result.add(map);10 }11 12 13 return result;14 }标红部分为与上次不同的部分,这个解析都是用的Jsoup自带的,当然正则表达式也是可以做到的哦,咳咳,我承认我很懒的啊,有好用的工具就直接用了,省时省力的事干嘛不用呢,就像写网站有框架了自然就用了,不喜欢用的我也木有办法,你可以使用正则表达式来做,话说以前用Python做爬虫的时候就是正则表达式做的。至此一个小的新闻的阅读APP就出世了,哦,对了,不要忘了在你的配置文件加入Activity以及上网许可,不然的话是会闪退的哦。当然这个APP很是粗糙,有时间的人可以将图片也加上进行一下页面的设计,做一下美工什么的。转载写一个新闻阅读app,怎么从其他网站获取新闻
㈤ 获取新闻的主要方法
1,通过专业新闻媒体获取新闻,比如报纸,广播电台,电视,以及新闻网站等。
2,通过社交媒体获取新闻。比如微博,微信公众号等。
3,通过政府发布的信息获取新闻,比如浏览政府网站或参加会议等。
4,通过道听途说获取新闻。
㈥ 怎样查询过去特定日期的新闻
你要去有新闻收集的网,很多新闻网站都有,不过不是很全面,你可以根据日期选择你查看的日子新闻。
㈦ 如何使用Java提取新闻网页的新闻日期。有重赏。
爬虫不行!!!你想啊,时间是别人查到数据库中或者是静态页面直接写进去的,别人不可能让你从他数据库中查询,当然也不可能那么有规律的编写网页,你只能对得到字符串进行处理而得到时间.
忘记说了,你会写爬虫说明你是了解爬虫的原理的啊,不应该问出这样的问题!!!
㈧ 查找特定时间的新闻怎么查
呵呵,这个因为地方的影响力,可能网上没有视频或是相关的报道!
麻烦采纳,谢谢!
㈨ 如何在网上筛选以前某一时段的新闻;以及如何所搜某一地区的新闻
在网络新闻下使用高级搜索http://news..com/advanced_news.html,键入限定条件就可以了;
google新闻没有高级搜索功能,不过你可以通过网页类的高级搜索http://www.google.com/advanced_search?hl=zh-CN
实现,会夹杂有非新闻类网页内容.
㈩ 如何自动抓取网页新闻内容
用前嗅的ForeSpider数据采集软件,配置好新闻网站的模板之后,就可以一键采集了。软件里有很多免费的采集模板,有很多新闻的模板,都是免费的。
可以设置自动定时采集,或间隔固定时间采集,更新时会自动排重,只采集更新后的内容。