求使用java语言抓取sina,搜狐网站上的新闻资讯的源码,或者原理说明也可~

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求使用java语言抓取sina,搜狐网站上的新闻资讯的源码,或者原理说明也可~相关的知识,希望对你有一定的参考价值。

下载一个jsoup包,并导入到项目里面。然后就可以很简便地编写爬虫了。
jsoup教程:http://www.flatws.cn/article/program/css/2011-03-22/17981.html
及jsoup中文版标准使用手册:http://www.open-open.com/jsoup/、

网上还有大量jsoup教程,使用中可能涉及到 正则表达式,这里推荐一个讲解正则表达式基本操作的:http://www.regexlab.com/zh/regref.htm

除此之外,还要考虑数据保存。你需要建立一个数据库,比如MySQL,然后将数据导入到数据库里面。这个过程可能比较困难。推荐网址:http://www.haogongju.net/art/1697604,上面有4个相关链接很有用。(其实上面讲解了抓取的全过程,含较完整的源代码。作者似乎没有使用jsoup,使用jsoup可以节省很多代码,比如截取某个标签后面的内容,使用jsoup包后一行代码就可以搞定)

最后将数据导出到word或execl里,可以使用工具Navicat ,网上很多绿色版,不用安装。追问

我想做的只是抓取新浪网页首页娱乐或者体育板块的标题内容,在自己的网页中显示一下就行,是不是不用建立数据库,学习正则表达式,直接分析html文件,按标签抓取就行啊?
还有我打算用htmlParser去实现。

追答

htmlParser我也没用过,如果你愿意手动抓取数据,可以使用“火车头数据采集平台”(这个我用过,很简便),上面有预输入的采集网站和采集规则,包含新浪网、腾讯网、搜狐网、路透网等。下载后直接打开找到运行就可以了。搜集内容包括“标题”、“内容”、”作者“、“时间”、“出处”,默认导入execl。只能帮你这么多了,不好意思。

参考技术A 你指的是网络传输的数据包?还只是页面的源码?
1.数据包:wireshark
2.源码:只能是浏览器可识别的html,可通过httpClient这个接口来处理。

R:如何打开链接列表来抓取新闻网站的主页?

【中文标题】R:如何打开链接列表来抓取新闻网站的主页?【英文标题】:R: How can I open a list of links to scrape the homepage of a news website? 【发布时间】:2020-06-25 10:40:27 【问题描述】:

我正在尝试使用 R 构建一个网络抓取工具,以抓取在新闻网站 www.20min.ch 上发布的文章。他们的 api 是可公开访问的,因此我可以创建一个包含标题、网址的数据框、描述和带有 rvest 的时间戳。下一步是访问每个链接并创建文章文本列表并将其与我的数据框结合起来。但是我不知道如何自动访问这些文章。理想情况下,我想读取_html链接1,然后用html节点复制文本,然后继续链接2...

这是我到目前为止写的:

site20min <- read_xml("https://api.20min.ch/rss/view/1")

site20min

url_list <- site20min %>% html_nodes('link') %>% html_text()

df20min <- data.frame(Title = character(),
                      Zeit = character(),
                      Lead = character(),
                      Text = character()
                      )

 for(i in 1:length(url_list))
      myLink <- url_list[i]
      site20min <- read_html(myLink)
            
      titel20min <- site20min %>% html_nodes('h1 span') %>% html_text()
      zeit20min <- site20min %>% html_nodes('#story_content .clearfix span') %>% html_text()
      lead20min <- site20min %>% html_nodes('#story_content h3') %>% html_text()
      text20min <- site20min %>% html_nodes('.story_text') %>% html_text()  
           
      df20min_a <- data.frame(Title = titel20min)
      df20min_b <- data.frame(Zeit = zeit20min)
      df20min_c <- data.frame(Lead = lead20min)
      df20min_d <- data.frame(Text = text20min)
              

我需要的是 R 打开每个链接并提取一些信息:

site20min_1 <- read_html("https://www.20min.ch/schweiz/news/story/-Es-liegen-auch-Junge-auf-der-Intensivstation--14630453")

  titel20min_1 <- site20min_1 %>% html_nodes('h1 span') %>% html_text()
  zeit20min_1 <- site20min_1 %>% html_nodes('#story_content .clearfix span') %>% html_text()
  lead20min_1 <- site20min_1 %>% html_nodes('#story_content h3') %>% html_text()
  text20min_1 <- site20min_1 %>% html_nodes('.story_text') %>% html_text()

将它绑定到数据框应该不是什么大问题。但目前我的一些结果是空的。

感谢您的帮助!

【问题讨论】:

【参考方案1】:

您在设置数据框方面走在了正确的轨道上。您可以遍历每个链接并将其 rbind 到您现有的数据框结构。

首先,您可以设置要循环的 url 向量。根据编辑,这里是这样一个向量:

url_list <- c("http://www.20min.ch/ausland/news/story/14618481",
              "http://www.20min.ch/schweiz/news/story/18901454",
              "http://www.20min.ch/finance/news/story/21796077",
              "http://www.20min.ch/schweiz/news/story/25363072",
              "http://www.20min.ch/schweiz/news/story/19113494",
              "http://www.20min.ch/community/social_promo/story/20407354",
              "https://cp.20min.ch/de/stories/635-stressfrei-durch-den-verkehr-so-sieht-der-alltag-von-busfahrer-claudio-aus")

接下来,您可以设置一个数据框结构,其中包含您要收集的所有内容。

# Set up the dataframe first
df20min <- data.frame(Title = character(),
                      Link = character(),
                      Lead = character(),
                      Zeit = character())

最后,您可以遍历列表中的每个 url,并将相关信息添加到您的数据框中。

# Go through a loop
for(i in 1:length(url_list))
  myLink <- url_list[i]
  site20min <- read_xml(myLink)

  # Extract the info
  titel20min <- site20min %>% html_nodes('title') %>% html_text()
  link20min <- site20min %>% html_nodes('link') %>% html_text() 
  zeit20min <- site20min %>% html_nodes('pubDate') %>% html_text()
  lead20min <- site20min %>% html_nodes('description') %>% html_text()

  # Structure into dataframe
  df20min_a <- data.frame(Title = titel20min, Link =link20min, Lead = lead20min)
  df20min_b <- df20min_a [-(1:2),]
  df20min_c <- data.frame(Zeit = zeit20min)

  # Insert into final dataframe
  df20min <- rbind(df20min, cbind(df20min_b,df20min_c))

【讨论】:

没用。我需要打开一个链接列表,而不是修改一个链接。 它同样适用于链接列表——您只需为此进行修改。由于您的问题没有澄清,我认为它正在循环通过所有相似的链接。如果您提供链接列表,我可以对其进行编辑,以便它满足您的需求。否则,你可以自己试试。不是循环 1 到 n,而是循环 1 通过存储在某个向量中的链接数。 已更新。非常感谢您的帮助!自我隔离的欢呼声。 我添加了这个。让我知道这是否适合你。 它仍然无法正常工作,但我们越来越近了。我认为它现在遍历列表,但结果仍然是空的。我会更新我的代码。

以上是关于求使用java语言抓取sina,搜狐网站上的新闻资讯的源码,或者原理说明也可~的主要内容,如果未能解决你的问题,请参考以下文章

新闻网站电脑版带手机版源码,仿东方头条,今日头条,搜狐自媒体网站帝国cms定制

Jsoup+HttpUnit爬取搜狐新闻

抓取新闻网站:异步爬虫实现的流程和细节

使用轻量级JAVA 爬虫Gecco工具抓取新闻DEMO

请问怎样用Java获取股票行情历史数据?新浪、搜狐、百度财经都可以......

Node.js抓取新浪新闻标题