python爬虫第一天

太久没折腾爬虫 又要重头开始了....感谢虫师大牛的文章.

接下来的是我的随笔

0x01 获取整个页面

我要爬的是百度贴吧的图,当然也是跟着虫师大牛的思路.

代码如下:

 #coding=utf-8
 import urllib
 #urllib 模块读取web页面相当于接口

 def gethtml(url):    #定义一个gethtml函数得到页面
     page = urllib.urlopen(url)
     html = page.read()
     return html
 html = gethtml("http://tieba.baidu.com/p/4674704187")

 print html

按照我的标注大概思路是这样,接着是虫师大牛的讲解:Urllib 模块提供了读取web页面数据的接口,我们可以像读取本地文件一样读取www和ftp上的数据。首先,我们定义了一个getHtml()函数:

  urllib.urlopen()方法用于打开一个URL地址。

  read()方法用于读取URL上的数据,向getHtml()函数传递一个网址,并把整个页面下载下来。执行程序就会把整个网页打印输出。

0x02 抓取数据

这里是我们想要的主题,代码如下:

 #coding=utf-8
 import urllib
 import re
 #urllib 模块读取web页面相当于接口,第二次正则表达试提图片

 def gethtml(url):    #定义一个gethtml函数得到页面
     page = urllib.urlopen(url)
     html = page.read()
     return html
 #在原来的基础上修改添加正则表达式的语句 src="http://imgsrc.baidu.com/forum/w%3D580/sign=ab2da672e124b899de3c79305e061d59/82777fec54e736d1ac3b007a93504fc2d5626915.jpg"
 def getimg(html):
     reg = r'scr="(.+?\.jpg)"pic_ext'
     imgre = re.compile (reg)
     imglist = re.findall (imgre,html) #牵扯到异步知识但还不算是,这里按顺序取得图片,我的理解.233
     return imglist

 html = gethtml("http://tieba.baidu.com/p/4674704187")
 print getimg(html)

  我们又创建了getImg()函数,用于在获取的整个页面中筛选需要的图片连接。re模块主要包含了正则表达式:

  re.compile() 可以把正则表达式编译成一个正则表达式对象.

  re.findall() 方法读取html 中包含 imgre(正则表达式)的数据。

   运行脚本将得到整个页面中包含图片的URL地址。

0x03 通过筛选图片有序保存

 #coding=utf-8
 import urllib
 import re
 #urllib 模块读取web页面相当于接口,第二次正则表达试提图片

 def gethtml(url):    #定义一个gethtml函数得到页面
     page = urllib.urlopen(url)
     html = page.read()
     return html
 #在原来的基础上修改添加正则表达式的语句 src="http://imgsrc.baidu.com/forum/w%3D580/sign=ab2da672e124b899de3c79305e061d59/82777fec54e736d1ac3b007a93504fc2d5626915.jpg"
 def getimg(html):
     reg = r'scr="(.+?\.jpg)"pic_ext'
     imgre = re.compile (reg)
     imglist = re.findall (imgre,html)  #牵扯到异步知识但还不算是,这里按顺序取得图片
     x = 0                              #return imglist 在原来的基础上添加for循环并保存到本地
     for imgurl in imglist:
         urllib.urlretrieve(imgurl,'%s.jpg' % x)
         x+=1

 html = gethtml("http://tieba.baidu.com/p/4674704187")
 print getimg(html)

urllib.urlretrieve()保存到本地,通过一个for循环对获取的图片连接进行遍历,为了使图片的文件名看上去更规范,对其进行重命名,命名规则通过x变量加1。保存的位置默认为程序的存放目录。

python爬虫第一天的更多相关文章

  1. Python爬虫第一步

    这只是记录一下自己学习爬虫的过程,可能少了些章法.我使用过的是Python3.x版本,IDE为Pycharm. 这里贴出代码集合,这一份代码也是以防自己以后忘记了什么,方便查阅. import req ...

  2. Python爬虫第一个成功版

    爬取http://www.mzitu.com/all里面的图片 import urllib.request import re import os url = 'http://www.mzitu.co ...

  3. 猿人学python爬虫第一题

    打开网站.F12,开启devtools.发现有段代码阻止了我们调试 好的.接下来有几种解决方法 1- 绕过阻止调试方法 方法1(推荐) 鼠标放在debugger该行,左边数字行号那一列.右键选择不在永 ...

  4. Python爬虫第一集

    import urllib2 response = urllib2.urlopen("http://www.baidu.com") print response.read() 简单 ...

  5. Python爬虫入门教程 12-100 半次元COS图爬取

    半次元COS图爬取-写在前面 今天在浏览网站的时候,忽然一个莫名的链接指引着我跳转到了半次元网站 https://bcy.net/ 打开之后,发现也没有什么有意思的内容,职业的敏感让我瞬间联想到了 c ...

  6. Python爬虫入门教程: 半次元COS图爬取

    半次元COS图爬取-写在前面 今天在浏览网站的时候,忽然一个莫名的链接指引着我跳转到了半次元网站 https://bcy.net/ 打开之后,发现也没有什么有意思的内容,职业的敏感让我瞬间联想到了 c ...

  7. 孤荷凌寒自学python第八十天开始写Python的第一个爬虫10

    孤荷凌寒自学python第八十天开始写Python的第一个爬虫10 (完整学习过程屏幕记录视频地址在文末) 原计划今天应当可以解决读取所有页的目录并转而取出所有新闻的功能,不过由于学习时间不够,只是进 ...

  8. 孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9并使用pydocx模块将结果写入word文档

    孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天终于完成了对docx模块针对 ...

  9. 孤荷凌寒自学python第七十八天开始写Python的第一个爬虫8

    孤荷凌寒自学python第七十八天开始写Python的第一个爬虫8 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天止基本完成了对docx模块针 ...

随机推荐

  1. MVC学习笔记2 - Razor语法

    Razor 同时支持 C# (C sharp) 和 VB (Visual Basic). C# 的主要 Razor 语法规则 Razor 代码封装于 @{ ... } 中 行内表达式(变量和函数)以 ...

  2. block、块级作用域

    block:语句块 (或其他语言中的 复合语句) 用来组织零个或多条语句. 包含在{ }里面 通常在流程控制语句 (如 if, for, while)中使用 块级作用域:通过var声明的变量没有块级作 ...

  3. 实践 config drive - 每天5分钟玩转 OpenStack(170)

    如果 instance 无法通过 metadata service 获取 metadata(无 DHCP 或者 nova-api-metadata 服务),instance 还可以通过 config ...

  4. Java基础之面试题

    本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力.下面的章节分为上下两篇,第一篇将要讨论面向对象编程和它的特点,关于Java和它的功能 ...

  5. 5.Redis常用命令:Hash

    我们可以将Redis中的Hashes类型看成具有String Key和String Value的map容器.所以该类型非常适合于存储值对象的信息.如Username.Password和Age等.如果H ...

  6. git初学笔记1

    之前对于软件的版本管理全靠粘贴辅助,觉得很low,而且也不是很方便.听前辈说git很好用,然后就学了一下. 今天主要学了些基本的操作命令,总结如下: 1. git最基本的操作  2. commit提交 ...

  7. Springboot在IDEA中执行,开启热部署

    仅适用IDEA中,eclipse中不需要设置 一.开启idea自动make功能 1 - Enable Automake from the compiler PRESS: CTRL + SHIFT + ...

  8. Kubernetes环境下的各种调试方法

    作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文介绍在Kubernetes环境下的调试方法,希望对读者有用.如果关 ...

  9. DOM 待编辑

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. Druid Indexing 服务

    索引服务由三个主要组件:一个是peon 组件,可以运行一个任务,一个是Middle Managers组件,管理peons,和一个overlord 组件管理任务分发给Middle Managers. o ...