鱼C论坛

 找回密码
 立即注册
查看: 1445|回复: 5

爬虫相关,如何收集那种需要不断下翻、才能查看的动态页面上的图片?

[复制链接]
发表于 2018-7-4 16:58:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 id是什么 于 2018-7-4 17:08 编辑

作为lofter的忠实用户,我尝试收集的是lofter的推荐页面,一个不需要登录就可以查看的页面。
(其实我更想收集自己的lofter的喜欢页面,我已经喜欢了几千张图了。但是进入这个页面需要登录,登录又需要验证,我毫无思路)
总之,页面地址如下,以用户“老相册”的推荐地址为例:http://www.lofter.com/shareblog/vintagephotos

我遇到的问题是:
这个页面只显示前20条推荐(每条推荐内含0~9张图不等),必须PgDn不断下翻,而且下翻看起来永无止尽,我怀疑它只有这一页……
而我不会用我的python下翻,或者做出其他动作获取其余部分的html代码。


附上我目前写的代码(只能抓取前20条的版本)
如果您留意到了我其他方面的错误和可以改进之处(我隐隐约约感觉找url那里可以靠标签精确找出来的),欢迎告诉我,将会非常感谢!
import requests
from bs4 import BeautifulSoup
import re
import os
import urllib.request

agent="Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"

#根据lofter用户id创建文件夹
authorid =str(input("输入用户名"))
res = requests.get("http://www.lofter.com/shareblog/%s"%authorid)
soup = BeautifulSoup(res.text,"html.parser")

filepath = r'F:/0music/%s/'%authorid
if os.path.exists(filepath) == False:
    os.makedirs(filepath)

#查找URL链接,列表去重   
pattern = re.compile('http://.*?\.jpg')
targets = soup.find_all("div",class_="img")
urls0 = pattern.findall(str(targets))
urls = list(set(urls0))

#下载到本地
for each in urls:
    print(each)
    getImg(each)

def getImg(url):
    localpath = os.path.join(filepath,"%s"%url.split('/')[-1])
    urllib.request.urlretrieve(url,localpath)
   

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-7-4 18:54:37 From FishC Mobile | 显示全部楼层
f12-network-可以看到下翻的时候有个接收到一个.dwr,里面就有图片地址
试一下去构造这个请求然后解析接收到的内容
--------------------------------------------------------------------
或者直接selenium
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-4 20:52:51 | 显示全部楼层
chakyam 发表于 2018-7-4 18:54
f12-network-可以看到下翻的时候有个接收到一个.dwr,里面就有图片地址
试一下去构造这个请求然后解析接收 ...

谢谢呀!我过会去学习一下selenium。
如果用构造这个dwr请求获得网址,这个网页要不断下翻,我要做一个循环吗?然而我并不知道要下翻多少次怎么办……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-4 22:16:16 | 显示全部楼层
chakyam 发表于 2018-7-4 18:54
f12-network-可以看到下翻的时候有个接收到一个.dwr,里面就有图片地址
试一下去构造这个请求然后解析接收 ...

谢谢呀!
我想继续请教一下第一种方法:我在dwr的preview里看见图片链接地址啦,但是这个网页要不断下翻,我要做一个循环吗?
我观察到每次From Data项里都会有一个叫BatchID的值变化,这个batchID我推算不出来……

                               
登录/注册后可看大图
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-5 00:20:17 From FishC Mobile | 显示全部楼层
难就难在构造请求这里。。
如果对爬虫性能要求不高的话直接selenium吧,用headless可以减小资源占用
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-5 11:31:37 | 显示全部楼层
chakyam 发表于 2018-7-5 00:20
难就难在构造请求这里。。
如果对爬虫性能要求不高的话直接selenium吧,用headless可以减小资源占用

谢谢!我去试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-24 08:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表