最近想要抓取豆瓣的信息研究学习,发现在抓取到第十页后就需要登陆。例如 我不是药神。 在网上搜索后尝试了两种方案,目前都没有成功,不知道大家有没有用R解决过这个问题。
方案一:用rvest的html_form() 原贴:https://zhuanlan.zhihu.com/p/28861801
library(rvest)
library(tidyverse)
login<-"https://accounts.douban.com/login"
pgsession<-html_session(login)
form.unfilled <- pgsession %>% html_node("form") %>% html_form()
pgform<-html_form(pgsession)
但问题是,在html_node就已经无法提取信息了。
方案二:用httr的POST函数 原贴: https://zhuanlan.zhihu.com/p/70608914 (搜到的都是PYTHON的教程)
library(httr)
library(XML)
headers = c('user-agent'= Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
)
data = list(
'name'= '用户名',
'password'= '密码',
'remember'= 'true')
POST(url = "https://accounts.douban.com/passport/login",config = config,body = data,encode = "form")
运行后会出现以下信息
Response [https://accounts.douban.com/passport/login]
Date: 2020-07-11 01:52
Status: 200
Content-Type: text/html; charset=utf-8
Size: 121 kB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录豆瓣</title>
<style type="text/css">
#db-nav-sns {
由于之后还是无法获取第十页的数据,不知道是因为模拟登陆失败,还是因为需要维持一个登陆的状态。感谢各位花时间帮助。