豆瓣电影改版,翻页方式从页码变成加载更多,简易爬虫方式不灵了。求大神指教!

豆瓣电影好像刚刚改版了,原来最简单的爬虫方式现在也不灵了。附上原来在windows系统中的R爬虫代码,有大神指教一下怎么改嘛?感激不尽
这是现在的页面
在这里插入图片描述

library(dplyr)
library(rvest)
library(stringr)


# 自定义函数

getMovList <- function(pgnum, intv_time=5){
  # 采集单个电影链接的列表的函数
  # pgnum是页面数量, intv_time是间隔时间
  
  # 首先设置一个空向量
  list_res <- as.character()
  
  for(i in 0:pgnum){
    
    urlnum <- i*20
    
    list_url <- str_c('https://movie.douban.com/explore#!type=movie&tag=%E5%8D%8E%E8%AF%AD&sort=time&page_limit=20&page_start=',
      urlnum, '&type=R')
    # 按照 css标签确定爬虫内容
    list_p <- read_html(list_url) %>% html_nodes('div.list') %>% html_attr('href') %>% .[str_detect(., 'https://movie.douban.com/subject')]
    
    # 单个页面上的url列表添加到总列表中
    list_res <- c(list_res, list_p)
  
    Sys.sleep(intv_time)
    
    cat('page', i, 'Done  ')
  }
  
  list_res <- unique(list_res)
  return(list_res)
}




getMovData <- function(url){
  # 根据单个电影url,采集具体信息
  # 目前初步设定 标题、年份、信息、剧情、评分等字段,可进一步优化
    
  prs <- read_html(url)
  
  title <- prs %>% html_nodes('h1 span') %>% html_text() %>% .[1]
  year <- prs %>% html_nodes('h1 span.year') %>% html_text() %>% str_remove_all('\\(|\\)')
  info <- prs %>% html_nodes('#info') %>% html_text() %>% str_trim()
  if(length(info)==0) info <- ''
  des <- prs %>% html_node('#link-report') %>% html_text() %>% str_trim() %>% .[1]
  if(length(des)==0) des <- ''
  Point<- prs %>% html_nodes(".rating_num")%>%html_text()%>%as.numeric()
  if(length(Point)==0) Point <- ''
  Popularity<- prs %>% html_nodes(".rating_people")%>%html_text()%>%as.character()
  if(length(Popularity)==0) Popularity <- ''
  res <- data.frame(title, year, info, des, Point, Popularity,
                    stringsAsFactors = F)
  
  return(res)
}



##### 采集数据

# 获取电影列表
url_lists <- getMovList(pgnum = 5)
url_lists

# 获取具体信息
mov_df <- tibble()

for(i in 1:length(url_lists)){
  mov_df <- bind_rows(mov_df, getMovData(url_lists[i]))
  Sys.sleep(0.5)
  cat('movie', i, 'Done  ')
}

write.csv(mov_df, 'D:\\mov.csv')


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现豆瓣图书网页的页爬取,可以考虑使用 Python 的 requests 和 BeautifulSoup 库。 首先,我们需要确定页的规律,例如每一页的 URL 地址是怎样的。以豆瓣图书的搜索结果页为例,可以发现每一页的 URL 都包含了一个 start 参数,表示该页的起始位置。例如: 第一页:https://book.douban.com/subject_search?search_text=python&start=0 第二页:https://book.douban.com/subject_search?search_text=python&start=15 第三页:https://book.douban.com/subject_search?search_text=python&start=30 以此类推,每一页的 start 参数都比前一页多 15。因此,我们可以通过修改 start 参数来实现页。 下面是一个简单的 Python 爬虫代码示例,可以用于爬取豆瓣图书搜索结果的前 3 页: ```python import requests from bs4 import BeautifulSoup url_template = 'https://book.douban.com/subject_search?search_text=python&start={}' for i in range(0, 45, 15): url = url_template.format(i) response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 在这里可以对搜索结果进行解析和处理 print('Page:', i/15+1) ``` 在这个示例中,我们使用了一个 url_template 字符串来表示搜索结果页的 URL 模板,然后通过循环来依次爬取前三页的搜索结果。在每一页的搜索结果页面中,我们可以使用 BeautifulSoup 来解析 HTML 并提取所需的信息。 需要注意的是,豆瓣图书搜索结果的页面是动态的,因此如果我们需要爬取多的搜索结果,可能需要使用 Selenium 等工具来模拟浏览器行为,或者通过分析 API 接口来获取多数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值