gpt4 book ai didi

html - 使用 R 在 imdb 中抓取网页

转载 作者:可可西里 更新时间:2023-11-01 13:10:46 28 4
gpt4 key购买 nike

我想在 imdb 中找到前 250 部电影的链接。我决定通过查看 HTML 源代码来找到一个通用模式。我找到了“chttp”,但我不确定它是否能带我到任何地方。我怎样才能找到一种模式来在其上构建链接?

require("XML")
imdb="http://www.imdb.com/chart/top?sort=ir,desc"
imdb.page=readLines(imdb)
g = grep(pattern = "chttp", x = imdb_page)
imdb.lines=imdb.page[g]

这是一个示例输出:

> imdb.lines[1]
[1] " <h3><a href=\"/chart/?ref_=chttp_cht\" >IMDb Charts</a></h3>"

我的主要问题是试图根据我已经编写的代码找出 250 部热门电影中每部的链接 (URL)。我基本上不知道下一步是什么。此外,我不确定我对“chttp”使用 grep 命令的模式是否是一个好模式。

因此根据从索引 3 开始的结果,电影标题在奇数索引上:

> imdb.lines[1]
[1] " <h3><a href=\"/chart/?ref_=chttp_cht\" >IMDb Charts</a></h3>"
> imdb.lines[2]
[1] " <td class=\"posterColumn\"><a href=\"/title/tt0111161/?ref_=chttp_tt_1\" ><img src=\"http://ia.media-imdb.com/images/M/MV5BODU4MjU4NjIwNl5BMl5BanBnXkFtZTgwMDU2MjEyMDE@._V1_SX34_CR0,0,34,50_.jpg\" width=\"34\" height=\"50\" />"
> imdb.lines[3]
[1] " <a href=\"/title/tt0111161/?ref_=chttp_tt_1\" title=\"Frank Darabont (dir.), Tim Robbins, Morgan Freeman\" >The Shawshank Redemption</a>"
> imdb.lines[6]
[1] " <td class=\"posterColumn\"><a href=\"/title/tt0071562/?ref_=chttp_tt_3\" ><img src=\"http://ia.media-imdb.com/images/M/MV5BNDc2NTM3MzU1Nl5BMl5BanBnXkFtZTcwMTA5Mzg3OA@@._V1_SX34_CR0,0,34,50_.jpg\" width=\"34\" height=\"50\" />"
> imdb.lines[4]
[1] " <td class=\"posterColumn\"><a href=\"/title/tt0068646/?ref_=chttp_tt_2\" ><img src=\"http://ia.media-imdb.com/images/M/MV5BMjEyMjcyNDI4MF5BMl5BanBnXkFtZTcwMDA5Mzg3OA@@._V1_SX34_CR0,0,34,50_.jpg\" width=\"34\" height=\"50\" />"
> imdb.lines[5]
[1] " <a href=\"/title/tt0068646/?ref_=chttp_tt_2\" title=\"Francis Ford Coppola (dir.), Marlon Brando, Al Pacino\" >The Godfather</a>"
> imdb.lines[7]
[1] " <a href=\"/title/tt0071562/?ref_=chttp_tt_3\" title=\"Francis Ford Coppola (dir.), Al Pacino, Robert De Niro\" >The Godfather: Part II</a>"
> imdb.lines[9]
[1] " <a href=\"/title/tt0468569/?ref_=chttp_tt_4\" title=\"Christopher Nolan (dir.), Christian Bale, Heath Ledger\" >The Dark Knight</a>"
> imdb.lines[10]
[1] " <td class=\"posterColumn\"><a href=\"/title/tt0110912/?ref_=chttp_tt_5\" ><img src=\"http://ia.media-imdb.com/images/M/MV5BMjE0ODk2NjczOV5BMl5BanBnXkFtZTYwNDQ0NDg4._V1_SY50_CR0,0,34,50_.jpg\" width=\"34\" height=\"50\" />"

最佳答案

xpath 让这样的工作变得微不足道。

library(XML)
tt <- htmlParse('http://www.imdb.com/chart/top?sort=ir,desc')
cbind(xpathSApply(tt, "//td[@class='titleColumn']//a", xmlValue),
t(xpathSApply(tt, "//td[@class='titleColumn']//a", xmlAttrs)))

cbind 的第一个参数返回标题(a 标签之间的文本),第二个参数返回 anchor 的属性(href 和 title,后者在此案例包含有关电影导演的详细信息)。

关于html - 使用 R 在 imdb 中抓取网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22780363/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com