https://movie.douban.com/tag/#/?sort=U&range=8,9&tags=电影
9分的电影只有1000多,chrome加载完后,用一个chrome扩展提取所有的链接就导出来了
但是8分~9分的,手工点击到了3000条记录还没有结束,一直手工加载也没有问题,但是问题是,到了2000多时,点击网页底部的『加载更多』反应很慢,间隔3~4分钟,再去点击才能加载。
请问如何导出所有的8~9分电影的URL链接呢?
https://movie.douban.com/tag/#/?sort=U&range=8,9&tags=电影
9分的电影只有1000多,chrome加载完后,用一个chrome扩展提取所有的链接就导出来了
但是8分~9分的,手工点击到了3000条记录还没有结束,一直手工加载也没有问题,但是问题是,到了2000多时,点击网页底部的『加载更多』反应很慢,间隔3~4分钟,再去点击才能加载。
请问如何导出所有的8~9分电影的URL链接呢?
试了东方永页机,但不到一会就不动了
试试python
发现一个永页机用户
试试 https://movie.douban.com/j/new_search_subjects?sort=U&range=8,9&tags=电影&start=0 写个定时器获取,start后面20 20累加
看起来像JSON数据,在后面累加20,内容会有变化
但是,写个定时器,对我这样的菜鸟而言。。。。
兄弟,学编程吗?(Doge
我数学从来没有及格过,当我看到代码里面的()函数、+、-……我躲还来不及,目前正在用那个永页机+手工点击一个下午了,哈哈哈(一边做别的,休息时再点击一下)
我去永页机的作者帖子留言一下,说不定运气好,他给我加了一个外挂……哈哈
let start=0,result=[],urls=[];let getData=()=>{fetch('https://movie.douban.com/j/new_search_subjects?sort=U&range=8,9&tags=%E7%94%B5%E5%BD%B1&start='+start).then(response=>response.json()).then(data=>{if(data && data.data){result=result.concat(data.data);data.data.forEach(d=>{urls.push(d.url)});start+=20;console.log(start)}getData()}).catch(e=>{setTimeout(()=>getData(),1000)})};getData();
顺手写了个,你试试。result是结果集合数组,urls是链接数组。不过似乎豆瓣有某时间段内300条的限制。要想一次拉取要多用几个IP
深深的理解,不过编程也没那么难,真的,你看大佬刚刚给你写的代码,多简短啊(Double Doge
import json
import time
import urllib.request
url = 'https://movie.douban.com/j/new_search_subjects?sort=U&range=8,9&tags=%E7%94%B5%E5%BD%B1&start='
herders = {
'User-Agent':
'Mozilla/5.0 (Windows NT 6.1;WOW64) AppleWebKit/537.36 (KHTML,like GeCKO) Chrome/45.0.2454.85 Safari/537.36 115Broswer/6.0.3',
'Referer': 'https://movie.douban.com/',
'Connection': 'keep-alive'
}
num = 0
data = []
while True:
req = urllib.request.Request('{}{}'.format(url, num), headers=herders)
response = urllib.request.urlopen(req)
html = json.loads(response.read().decode('utf8'))['data']
if len(html) > 0:
data = data + html
else:
break
num = num + 20
time.sleep(50)
with open('douban_movie.json', 'w') as f:
json.dump(data, f)
写了个python版的 50秒抓一次 最后会保存个json
@Hoothin 即作者,喵哈哈哈
个人一般对速度需求不高,我一般会推荐超低速……挂它一个晚上
我从另外一个思路来解决一下这个事情。
首页确定下目的,看遍 8~9 分的电影,那么直接利用豆瓣的“已看过”功能,就能解决这个问题。
每看过一部电影就来标记已看过,然后再次打开这个页面,过滤“我没看过”就剩下了其余的影片。
我觉得这样的操作相当优雅。当然 每看过一部电影就来标记已看过 这件事一点也不简单。
至于一次性下载所有影片,或者导出后在其他地方使用,远不如直接标记已看过来的简单。
当然如果是其他需求,就是要爬这个列表,那就是另外一回事了。
青蛙,我的目的是找到8~9分中,我没有看过的电影
所以,所有的8~9分的电影URL需要收集下来,闲暇时一个一个的慢慢看,看到哪一部分有兴趣,就mark一下,不感兴趣的就pass,当成一个发现好电影的途径
你用的是python2吧 看看这个