原文链接python爬虫实战(一)–爬取知乎话题图片

前言

在学习了python基础之后,该尝试用python做一些有趣的事情了–爬虫。
知识准备:
1.python基础知识
2.urllib库使用
3.http基本知识
4.html/js基本知识。
环境准备:
1.linux
2.python3

话不多说,开始

爬取目标

本次爬取的目标是知乎话题下的图片。

分析

以知乎话题你见过哪些谜之笑点的图片为例。
用浏览器打开该链接。鼠标右键-查看源代码。可以看到,图片的url在img标签中,那么在爬取到该网页内容之后,可以使用正则表达式,获取图片的url,再根据url将图片下载下来,便大功告成了。

代码

#!/usr/bin/python3
#coding=utf-8
import urllib.request as request
import urllib.parse as parse
import string
import sys
import re
import os
import urllib.error as error'''
获取url中的图片
url:链接地址
dirpath:保存路径
'''
def getUrlImage(url,dirpath):dldNum=0data = request.urlopen(url).read()if not os.path.isdir(dirpath):os.makedirs(dirpath)page_data = data.decode('gbk','ignore')#获取img标签数据page_image = re.compile('<img src=\"(.+?)\"')for image in page_image.findall(page_data):#匹配数据中的图片pattern = re.compile(r'^https://.*.(jpg|png|gif|jpeg)$')if  pattern.match(image):print (image)try:extension =  GetFileNameAndExt(image)image_data = request.urlopen(image).read()image_path = dirpath+'/'+str(dldNum)+extensiondldNum += 1print(image_path)with open(image_path, 'wb') as image_file:image_file.write(image_data)image_file.close()except error.URLError as e:print('Download failed')
'''
获取文件名中的扩展名
'''
def GetFileNameAndExt(filename):(filepath,tempfilename) = os.path.split(filename);(shotname,extension) = os.path.splitext(tempfilename);return extension
'''
入口函数
带两个参数'''
if __name__ == "__main__":if(len(sys.argv) < 2):print("usage:./download_spider.py url  savePath")else:print("the url is "+str(sys.argv[1]))print("the save path is "+str(sys.argv[2]))url = sys.argv[1]savePath = sys.argv[2]getUrlImage(url,savePath)

运行

有两个参数,第一个参数是url,即话题的链接,第二个参数是所要保存图片的路径。
在linux下运行

./getZhiHuImage.py  https://www.zhihu.com/question/41432739 /home/spider/

将会在目的目录下发现下载好的图片。39 /home/spider/
“`
将会在目的目录下发现下载好的图片。

python爬虫实战(一)--爬取知乎话题图片相关推荐

  1. python爬虫实战之爬取知乎帖子

     刚开始学习python爬虫,参考代码:https://github.com/lijaha/web-spider/blob/master/Get_ZhiHu_question.py  相关教程http ...

  2. Python 网络爬虫实战:爬取知乎回答中的全部图片

    平时逛知乎的时候,经常能看到很多很棒的图片,精美的壁纸,搞笑的表情包,有趣的截图等等,总有想全部保存下来的冲动. 于是在一个小老弟的拜托之下,我把之前的知乎爬虫改造了一下,改装成了一个可以下载知乎回答 ...

  3. 携程ajax,Python爬虫实战之爬取携程评论

    一.分析数据源 这里的数据源是指html网页?还是Aajx异步.对于爬虫初学者来说,可能不知道怎么判断,这里辰哥也手把手过一遍. 提示:以下操作均不需要登录(当然登录也可以) 咱们先在浏览器里面搜索携 ...

  4. Python爬虫实战之爬取糗事百科段子

    Python爬虫实战之爬取糗事百科段子 完整代码地址:Python爬虫实战之爬取糗事百科段子 程序代码详解: Spider1-qiushibaike.py:爬取糗事百科的8小时最新页的段子.包含的信息 ...

  5. Python爬虫实战之爬取百度贴吧帖子

    Python爬虫实战之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 对百度贴吧的 ...

  6. Python爬虫实战(1) | 爬取豆瓣网排名前250的电影(下)

    在Python爬虫实战(1) | 爬取豆瓣网排名前250的电影(上)中,我们最后爬出来的结果不是很完美,这对于"精益求精.追求完美的"程序猿来说怎么能够甘心 所以,今天,用pyth ...

  7. python抓取文献关键信息,python爬虫——使用selenium爬取知网文献相关信息

    python爬虫--使用selenium爬取知网文献相关信息 写在前面: 本文章限于交流讨论,请不要使用文章的代码去攻击别人的服务器 如侵权联系作者删除 文中的错误已经修改过来了,谢谢各位爬友指出错误 ...

  8. Python爬虫实战之爬取网站全部图片(一)

    Python爬虫实战之爬取网站全部图片(二) Python爬虫实战之通过ajax获得图片地址实现全站图片下载(三) 一.获得图片地址 和 图片名称 1.进入网址之后 按F12  打开开发人员工具点击e ...

  9. Python爬虫实战:爬取解放日报新闻文章

    上一篇<Python 网络爬虫实战:爬取人民日报新闻文章>发布之后,确实帮到了不少朋友. 前几天,我好哥们问我:我想爬另一个日报新闻网站,网页结构几乎跟人民日报几乎一模一样,但是我用你的那 ...

最新文章

  1. 语言输出奇树有多少总方法_如何学习一门编程语言?这些方法告诉你,不要再说你不会学习...
  2. jQuery Mobile手机网站案例
  3. html中内联元素和块元素的区别、用法以及联系
  4. html5 ios cookie,ios – WKWebView,获取所有cookie
  5. 王道考研 计算机网络16网络层功能 数据交换方式 电路交换 报文交换 分组交换 路由算法 OSPF RIP AS自治系统 IGP内部网关协议 EGP外部网关协议
  6. 利用VMware Infrastructure SDK编程控制虚拟机集群(3)
  7. 每天一个实用小技巧!归纳多个文件、批量修改文件名
  8. JavaScript ES2019的新增功能
  9. myPassword
  10. C++操作MySQL大量数据插入效率低下的解决方法
  11. 宝可梦 序列号认证服务器发生了错误,宝可梦探险寻宝无法连接服务器是什么原因...
  12. css 商城 两列_你需掌握的CSS知识都在这了(长文建议收藏,文末有福利)
  13. 【春节闲聊】程序员如何打破35岁魔咒
  14. Python 编程辅助工具--ipython
  15. turtle画图实现阿根廷足球
  16. 丁子高曝爱子长相似父母混合体 坦言:脸型像我
  17. 213:Python学习之数据分析篇——Jupyter 引入yfinance做K线股票分析
  18. Android开发中父类与子类通讯的一个简单实现
  19. Makefile -Linux编译必备知识
  20. http,tcp,udp协议深度分析

热门文章

  1. NSArray 学习
  2. 族蚂网搭建网站最重要的因素是什么?
  3. 网页中调用百度地图显示公司位置并且红色标注
  4. 机器学习实战——多模型实现预测功能
  5. Mac 安装Nginx详细教程
  6. 人工智能-自然语言处理(NLP):NLP技术栈
  7. MATLAB的数学运算基础
  8. 北京房租大涨?Python 6个维度,数万条数据帮你揭秘
  9. LoadRunner12启动webTour程序报错“httpd.exe: Could not reliably determine the server‘s fully…“
  10. 运用js在网页中输出九九乘法表 (带边框)(附代码)