# 利⽤ pip 安装 selenium

pip install -U selenium

下载安装完成后,我建议⼤家打开上⾯的链接,阅读⼀下 selenium 的使⽤⽅法。意思⼤致为,为了运⾏ selenium,我们需要安装⼀个 chrome 的 driver,下载完成后,对于 Mac ⽤户,直接把它复制到/usr/bin或者/usr/local/bin,当然你也可以⾃定义并添加路径。对于 Win ⽤户,也是同理。

Chrome: https://sites.google.com/a/chromium.org/chromedriver/downloads

Firefox: https://github.com/mozilla/geckodriver/releases

Safari: https://webkit.org/blog/6900/webdriver-support-in-safari-10/

3.在爬⾍的时候我们经常会发现⽹页都是经过压缩去掉缩进和空格的,页⾯结构会很不清晰,这时候我们就需要⽤ BeautifulSoup这个 lib 来进⾏html ⽂件结构化。

pip install beautifulsoup4

Section 2

代码解释

2.0 Import Libraries

2.1 确定目标URL

2.2 模拟滚动点击操作

在 main 函数⾥我们定义⼀个重复执⾏的函数,来进⾏滚动和点击的操作。⾸先我们可以⽤driver.execute_scrip来进⾏滚动操作。通过观察,我们发现知乎问题底部有⼀个“查看更多回答的”的按钮,如下图。因此我们可以⽤driver.find_element_by_css_selector来选中这个按钮,并点击。为了爱护⼩朋友们的⾝体,我们这⾥只爬取五个页⾯的图⽚。其实,五个页⾯,100个回答,往往都能有1000张图⽚了。。。

仔细看下图高亮处:

2.3 结构化HTML页面并保存

我们每次爬取页⾯信息,要做的第⼀件事就是把页⾯ HTML 存储下来。为了⽅便我们⾁眼浏览,这时候就需要⽤beautifulSoup把压缩后的 HTML ⽂件结构化并保存。

2.4 爬取知乎问题回答里的 nodes

要知道,在我们每次想要爬取页⾯信息之前,要做的第⼀件事就是观察,观察这个页⾯的结构,量⾝⽽裁。⼀般每个页⾯⾥都有很多个图⽚,⽐如在这个知乎页⾯⾥,有很多⽤户头像以及插⼊的图⽚。但是我们这⾥不想要⽤户头像,我们只想要要回答问题⾥的照⽚,所以不能够直接爬取所有 的照⽚。通过观察,我发现每⼀个图⽚附近都会有⼀个的node,⾥边不仅有缩略图 URL 还有⾼清原图的 URL。因此,我为了偷懒,就直接把所有给爬了下来。仔细观察,你会发现每个的<>都是被 escape(HTML entity 转码)了的,所以要⽤html.parser.unescape进⾏解码。

转码后,结果如下(琳琅满目的高清无码大图URL):

2.5 下载图片

有了 img 的所有 node,下载图⽚就轻松多了。⽤⼀个 urllib.request.urlretrieve就全部搞定。这⾥我又做了⼀点清理,把所有的 url 单独存了⼀下,并⽤序号标记,你也可以不要这⼀步直接下载。

2.6 您好,您的小H图大礼包已送达!

成功后,你会看到以下消息。然后你就可以孤身一人躲在被窝里嘿嘿嘿了。。。

# ***大哥:小弟变成这样真的不是我教的������ ***

因为考虑到肖像问题,只展示图库的冰山一小角(不露脸的),随便给吃瓜群众们展示一下:

习惯性衣来伸手饭来张口的客官们!

代码已经给爷准备好了:

https://github.com/huntingzhu/webcrawler

Python 2.7和Python 3.6的代码都有......

今天的内容,各位客官们还满意否?

职责:

要求:

点击“阅读全文”来瞅一瞅我们厉害的网站吧!返回搜狐,查看更多

以python入门教程新世界-50⾏python爬⾍代码, 带你正确打开知乎新世界!相关推荐

  1. python入门教程(非常详细),python教学资源百度网盘

    python入门教程 <[3]学习视频>百度网盘资源免费下载链接提取码:m6tm[3]学习视频|python视频教程|Python入门基础视频教程|lets python 视频教程|Let ...

  2. python入门教程非常详细-Python编程入门教程:从入门到高级,非常详细

    本文的资料和内容是我下载的,觉得非常有用,于是转过来大家瞧瞧: 这里给初学Python的朋友提供一些建议和指导吧.大神请无视, 俗话说:授人以鱼不如授人以渔.所以我这里只是阐述学习过程,并不会直接详细 ...

  3. python入门教程非常详细-python初学者怎么入门:python入门教程非常详细

    python安装后如何打开 ,先找到python安装位置. python学习网,大量的免费python入门教程,在线学习! 进装目录之后,点击Lib文件夹. 相关推荐:<Python教程> ...

  4. python入门教程 非常详细-Python编程入门教程:从入门到高级,非常详细

    本文的资料和内容是我下载的,觉得非常有用,于是转过来大家瞧瞧: 这里给初学Python的朋友提供一些建议和指导吧.大神请无视, 俗话说:授人以鱼不如授人以渔.所以我这里只是阐述学习过程,并不会直接详细 ...

  5. python入门教程(非常详细)-python初学者怎么入门:python入门教程非常详细

    python安装后如何打开 ,先找到python安装位置. python学习网,大量的免费python入门教程,在线学习! 进装目录之后,点击Lib文件夹. 相关推荐:<Python教程> ...

  6. python入门教程非常详细-Python该怎么入门?Python入门教程(非常详细)

    Python要学多久可以学会,达到精通呢? 任何知识都是基础入门比较快,达到通晓的程序是需求时日的,这是一个逐渐激烈的进程. 通晓任何一门编程语言,都需求通过大量的实践来积累经验,解决遇到的各种疑难问 ...

  7. python入门教程廖雪峰-Python 入门1 浅读廖雪峰老师的网站入门教程

    Photo by Julia 距离上次写学习笔记已经过去近三周了,五月玩的有点过于high了,加上陪胖哥慢慢步入细胞的殿堂也用去了较多时间.不管怎么说,自己立下的flag倒了也要马上扶起来,一切都不是 ...

  8. python入门教程百度云-Python爬虫入门教程 百度云盘下载【传智播客】

    Python爬虫入门教程 中级共10课 对实现疫情爬虫项目使用到每一个模块逐一讲解, 每个模块都伴随一个案例; 最后水到渠成, 轻松完成疫情爬虫项目.提取码:ea1n 180分钟学会爬虫入门: 1. ...

  9. python入门教程完整版-Python入门教程完整版(懂中文就能学会)

    隐藏内容,您需要满足以下条件方可查看 目录大纲: 本套教程15天 学前环境搭建 1-3 天内容为Linux基础命令 4-13 天内容为Python基础教程 14-15 天内容为 飞机大战项目演练 视频 ...

最新文章

  1. f-free 查看系统中空闲和使用的内存
  2. 让Windows下Git和TortoiseGit支持中文文件名/UTF-8
  3. 用java程序将GBK字符转成UTF-8编码格式(转)
  4. 【echart数组数据】echarts两条或两条以上x轴不同的线合并x轴 含有不连续数据
  5. RowVersion字段从SqlServer到PostgreSQL的迁移
  6. 椭圆极点极线性质_又见阿氏圆——适合作椭圆大题的小题
  7. android计算器实现sin功能,简单实现Android计算器功能
  8. 软件(敏捷)开发中工作量与工时评估模型
  9. 飞思卡尔单片机DZ60---TPM1\TPM2溢出中断
  10. MAX25————用vray还原模型在Substance Painter的光照以及材质效果
  11. 关于一句英文句子的词数的判断
  12. 51地图API接口的初次使用
  13. 初出茅庐的小李第73篇博客之offsetof(type, member-designator)使用
  14. 有关clipToPadding、 clipChildren的那些事
  15. 【腾讯敏捷转型NO.1】敏捷是什么鬼?
  16. OPPO R7s线刷和恢复出厂设置的比较
  17. Adobe Premiere Pro CS6打开报错(Oxc000007b)解决办法
  18. 如何利用无线技术有效预化工厂防爆炸事故?
  19. 这样的美杜莎,你不爱?
  20. ZBrush怎样快速雕刻出头发(一)

热门文章

  1. mac cad石材填充图案_CAD超级填充教程
  2. 在ssd中显示map tensorflow代码_PyTorch 1.3重磅发布,又要和TensorFlow搞事情了
  3. 怎样用python自动化办公_会python基础,如何学习自动化办公?
  4. 开发日记-20190915 关键词 汇编语言王爽版 第九章
  5. 岭回归与Lasso回归
  6. 【BZOJ3745】Norma(CDQ分治)
  7. mybatis面试题讲解1
  8. Spring 教程06
  9. Gulp:自动化构建工具
  10. winform修改、打开窗体、构造函数传值