V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
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
boatfu
V2EX  ›  Python

爬虫遇到的问题

  •  
  •   boatfu · 2019-04-02 14:41:33 +08:00 via Android · 2970 次点击
    这是一个创建于 2062 天前的主题,其中的信息可能已经有所发展或是发生改变。

    昨天入门了下爬虫

    今天遇到了问题

    我想爬这个图片网的图片

    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
    zgcwkj
        1
    zgcwkj  
       2019-04-02 15:27:31 +08:00   ❤️ 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 发表
    LZSZ
        2
    LZSZ  
       2019-04-02 15:46:49 +08:00
    直接抓源码不行吗 <script>window.__INITIAL_STATE__ = { xxxxxxx }</script> 里面的 转换成 json 格式读就可以了
    longchisihai
        3
    longchisihai  
       2019-04-02 15:47:05 +08:00
    楼上的回复真是 stackoverflow 即视感
    larendorrx
        4
    larendorrx  
       2019-04-02 15:52:21 +08:00
    客户端渲染的页面就更好抓了, 它总要去请求数据的, 所以就去看请求的格式, 直接 request 就完事了, 当然要注意 Headers.
    可能会有一些认证之类的
    LZSZ
        5
    LZSZ  
       2019-04-02 15:55:31 +08:00
    https://unsplash.com/developers 提供了 api 啊 好像是免费的 你看看
    boatfu
        6
    boatfu  
    OP
       2019-04-02 18:32:21 +08:00   ❤️ 1
    谢谢大家的分析,凶手找到了,是因为时间太短,页面没有加载出来,driver 创建后,先用 time.sleep(10),就没问题啦
    janstk
        7
    janstk  
       2019-04-02 21:21:39 +08:00
    realkenshinji
        8
    realkenshinji  
       2019-04-02 21:35:20 +08:00 via iPhone
    人家明明都有 api 给你用了,哎....
    gengfire
        9
    gengfire  
       2019-04-03 09:01:23 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2731 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:17 · PVG 20:17 · LAX 04:17 · JFK 07:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.