爬虫遇到的问题

2019-04-02 14:41:33 +08:00
 boatfu

昨天入门了下爬虫

今天遇到了问题

我想爬这个图片网的图片

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 来处理

2978 次点击
所在节点    Python
9 条回复
zgcwkj
2019-04-02 15:27:31 +08:00
给个方法:(只在你说的这个网站有效)
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
2019-04-02 15:46:49 +08:00
直接抓源码不行吗 <script>window.__INITIAL_STATE__ = { xxxxxxx }</script> 里面的 转换成 json 格式读就可以了
longchisihai
2019-04-02 15:47:05 +08:00
楼上的回复真是 stackoverflow 即视感
larendorrx
2019-04-02 15:52:21 +08:00
客户端渲染的页面就更好抓了, 它总要去请求数据的, 所以就去看请求的格式, 直接 request 就完事了, 当然要注意 Headers.
可能会有一些认证之类的
LZSZ
2019-04-02 15:55:31 +08:00
https://unsplash.com/developers 提供了 api 啊 好像是免费的 你看看
boatfu
2019-04-02 18:32:21 +08:00
谢谢大家的分析,凶手找到了,是因为时间太短,页面没有加载出来,driver 创建后,先用 time.sleep(10),就没问题啦
janstk
2019-04-02 21:21:39 +08:00
realkenshinji
2019-04-02 21:35:20 +08:00
人家明明都有 api 给你用了,哎....
gengfire
2019-04-03 09:01:23 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/551248

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX