首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
V2EX  ›  Python

爬虫遇到的问题

  •  
  •   boatfu · 195 天前 via Android · 1456 次点击
    这是一个创建于 195 天前的主题,其中的信息可能已经有所发展或是发生改变。

    昨天入门了下爬虫

    今天遇到了问题

    我想爬这个图片网的图片

    https://unsplash.com

    就是用 selenium 获取到了 url

    但是得到的 driver.page_source 的值是一堆 javascript,没有之类的标签

    而我想获得的是

    里的内容

    所以现在用 beautifulsoup 解析不出来

    BeautifulSoup(driver.page_source, 'lxml').find_all('a', class_='cV68d')

    应该怎么解决?貌似用 driver.get_element 之类的方法也能找出来标签内容,但我想把整个 driver.page_sourse 的内容解析出来,用 soup 来处理

    9 回复  |  直到 2019-04-03 09:01:23 +08:00
        1
    zgcwkj   195 天前   ♥ 1
    给个方法:(只在你说的这个网站有效)
    1,打开这个网址( https://unsplash.com/),仔细观察网页源码的每张图片数据,可以发现每张图片都是以 A 标签,并且 A 标签都是( href="/photos/***")
    2,在开发者工具切换到( Network )节点,回到网页,点击任意一张图片进行预览,再到开发者工具的( Network )选项卡,可以看到请求的数据有哪些,细心观察数据请求,会有一个是请求到( https://unsplash.com/napi/photos/***)
    3,我们使用正则匹配( https://unsplash.com/)的网页源码,匹配到每张图片的( href="/photos/***")内容(***是图片的 ID )
    4,然后结合第二步的工作,然后通过 GET 请求这个地址( https://unsplash.com/napi/photos/****),会返回一个 JSON 数据,找到 urls.full 这个数据就是图片下载链接,可以直接把文件下载下来!

    仅提供思路,不要转载,仅在 V2EX 发表
        2
    LZSZ   195 天前
    直接抓源码不行吗 <script>window.__INITIAL_STATE__ = { xxxxxxx }</script> 里面的 转换成 json 格式读就可以了
        3
    longchisihai   195 天前
    楼上的回复真是 stackoverflow 即视感
        4
    larendorrx   195 天前
    客户端渲染的页面就更好抓了, 它总要去请求数据的, 所以就去看请求的格式, 直接 request 就完事了, 当然要注意 Headers.
    可能会有一些认证之类的
        5
    LZSZ   195 天前
    https://unsplash.com/developers 提供了 api 啊 好像是免费的 你看看
        6
    boatfu   195 天前   ♥ 1
    谢谢大家的分析,凶手找到了,是因为时间太短,页面没有加载出来,driver 创建后,先用 time.sleep(10),就没问题啦
        8
    realkenshinji   195 天前 via iPhone
    人家明明都有 api 给你用了,哎....
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1123 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 18:27 · PVG 02:27 · LAX 11:27 · JFK 14:27
    ♥ Do have faith in what you're doing.