R语言爬取豆瓣电影TOP100
时间: 2024-12-09 11:02:35 浏览: 16
R语言是一种广泛用于统计计算和数据可视化的编程语言,虽然不像Python那样专门设计用于网络爬虫,但它也可以通过一些库如`rvest`、`xml2`或`httr`来抓取网页数据。以下是使用`rvest`库从豆瓣电影网站获取Top100电影的基本步骤:
1. 安装必要的库:
```sh
install.packages("rvest")
library(rvest)
```
2. 读取HTML内容并定位数据元素:
```R
url <- "https://movie.douban.com/top250"
page <- read_html(url)
# 确定包含电影信息的部分(这通常依赖于豆瓣的具体页面结构)
titles <- page %>% html_nodes(".title") %>% html_text()
ratings <- page %>% html_nodes(".rating_num") %>% html_text() %>% as.numeric()
```
注意:豆瓣的网页结构可能会改变,你需要查看当前页面的HTML来找到正确的选择器。上述代码假设了标题和评分是在`.title`和`.rating_num`类中的元素。
3. 存储数据:
```R
data <- data.frame(title = titles[1:100], rating = ratings[1:100])
# 如果你想将数据保存到CSV文件
write.csv(data, "douban_top100.csv", row.names = FALSE)
```
相关问题
爬取豆瓣电影TOP250代码
以下是使用 Python 语言和 requests、BeautifulSoup 库爬取豆瓣电影TOP250的代码:
```python
import requests
from bs4 import BeautifulSoup
url = 'https://movie.douban.com/top250'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
movies = []
for i in range(0, 250, 25):
r = requests.get(url + '?start=' + str(i), headers=headers)
soup = BeautifulSoup(r.text, 'html.parser')
items = soup.find_all('div', class_='item')
for item in items:
movie = {}
movie['rank'] = item.find('div', class_='pic').em.text
movie['title'] = item.find('div', class_='hd').a.text.strip()
movie['star'] = item.find('div', class_='star').span.text.strip()
movie['quote'] = item.find('span', class_='inq').text.strip()
movies.append(movie)
for movie in movies:
print(movie)
```
该代码会输出豆瓣电影TOP250的排名、电影名称、评分和简介。你也可以将电影信息存储到文件中或者使用其他方式展示。不过需要注意的是,爬取网站数据时需要尊重网站的规则,不要过于频繁地请求,也不要将爬取到的数据用于商业用途。
r语言使用函数:grep和regexpr与substr,尝试爬取豆瓣电影 Top 250,网址:https://movie.douban.com/top250?start=1&filter=,抓取目标: 导演与主演
首先,需要用到rvest包来进行网页爬取,可以使用以下代码进行安装:
```R
install.packages("rvest")
library(rvest)
```
然后,我们需要获取豆瓣电影 Top 250 网页的HTML内容,可以使用以下代码:
```R
url <- "https://movie.douban.com/top250?start=1&filter="
webpage <- read_html(url)
```
接着,我们需要使用`html_nodes()`函数来获取网页中的节点信息,并使用`html_text()`函数来获取节点中的文本信息。我们可以先使用`html_nodes()`函数获取所有的电影条目,然后再使用`html_text()`函数获取导演与主演信息。
```R
# 获取电影条目
movies <- webpage %>% html_nodes(".grid_view .item")
# 循环遍历每一个电影条目
for (movie in movies) {
# 获取导演信息
directors <- movie %>% html_nodes(".bd p:nth-child(1)") %>% html_text()
directors <- gsub("导演: ", "", directors)
# 获取主演信息
actors <- movie %>% html_nodes(".bd p:nth-child(2)") %>% html_text()
actors <- substr(actors, 4, nchar(actors))
actors <- gsub(" / ", ", ", actors)
# 输出导演与主演信息
cat("导演:", directors, "\n")
cat("主演:", actors, "\n\n")
}
```
在上面的代码中,我们使用了`html_nodes()`函数获取所有的电影条目,然后循环遍历每一个电影条目。在每一个电影条目中,我们使用`html_nodes()`函数分别获取导演信息和主演信息,并使用`html_text()`函数获取节点中的文本信息。对于导演信息,我们使用`gsub()`函数将"导演: "替换为空字符串;对于主演信息,我们使用`substr()`函数截取从第四个字符开始到字符串结尾的部分,并使用`gsub()`函数将" / "替换为逗号。最后,我们使用`cat()`函数输出导演与主演信息。
阅读全文