Python爬虫——第一个小爬虫01

Python小爬虫——贴吧图片的爬取

在对Python有了一定的基础学习后,进行贴吧图片抓取小程序的编写。


目标:

  • 首先肯定要实现图片抓取这个基本功能
  • 然后要有一定的交互,程序不能太傻吧
  • 最后实现对用户所给的链接进行抓取

一、页面获取

要让python可以进行对网页的访问,那肯定要用到urllib之类的包。So先来个 import urllib

urllib中有 urllib.urlopen(str) 方法用于打开网页并返回一个对象,调用这个对象的read()方法后能直接获得网页的源代码,内容与浏览器右键查看源码的内容一样。

1 #coding:utf-8
2 import urllib
3
4 page = urllib.urlopen(‘http://tieba.baidu.com/p/1753935195‘)#打开网页
5 htmlcode = page.read()#读取页面源码
6 print htmlcode#在控制台输出

运行结果与查看源码其实差不多

运行结果就不放上来了

也可以写到文本文档中:

 1 #coding:utf-8
 2 import urllib
 3
 4 page = urllib.urlopen(‘http://tieba.baidu.com/p/1753935195‘)
 5 htmlcode = page.read()
 6 #print htmlcode
 7
 8 pageFile = open(‘pageCode.txt‘,‘w‘)#以写的方式打开pageCode.txt
 9 pageFile.write(htmlcode)#写入
10 pageFile.close()#开了记得关

运行一遍,txt就出现在了getJpg.py的目录下

好了别闹,我们把它封装成方法:

1 def get_html(url):
2     page = urllib.urlopen(url)
3     html = page.read()
4     return html

然后我们的页面获取代码就K.O.


二、图片(目标)的提取

做完上面步骤,你打开txt一看,我去!这都是什么跟什么啊,根本找不到图片在哪好伐?

客官别急啊,我这就去给你叫我们的小。。。图片!图片!

首先我们要一个正则表达式 (什么你不会?请看菜鸟入门教程-->Go)

然后我们看源代码,Yeah 我们找到了其中一张图片是这样的

写出图片的正则表达式: reg = r‘src="(.+?\.jpg)" width‘

解释下吧——匹配以src="开头然后接一个或多个任意字符(非贪婪),以.jpg" width结尾的字符串。比如图中红框内src后 双引号里的链接就是一个匹配的字符串。

接着我们要做的就是从get_html方法返回的辣么长一串字符串中 拿到 满足正则表达式的 字符串。

用到python中的re库中的 re.findall(str) 它返回一个满足匹配的字符串组成的列表

 1 # coding:utf-8
 2 import urllib
 3 import re
 4
 5 def get_html(url):
 6     page = urllib.urlopen(url)
 7     html = page.read()
 8     return html
 9
10 reg = r‘src="(.+?\.jpg)" width‘#正则表达式
11 reg_img = re.compile(reg)#编译一下,运行更快
12 imglist = reg_img.findall(get_html(‘http://tieba.baidu.com/p/1753935195‘))#进行匹配
13 for img in imglist:
14     print img

打印出这么多图片链接

光把链接拿出来没用啊,我们的目标是下载下来~

urllib库中有一个 urllib.urlretrieve(链接,名字) 方法,它的作用是以第二个参数为名字下载链接中的内容,我们来试用一下

在上面代码循环中加上 urllib.urlretrieve(img, ‘tieba.jpg‘)

卧槽!!!怎么只下了一张

至少它下载了不是?啪啪啪啪啪(掌声)

检查下问题出在哪。。。。

没错我们只给了一个tieba.jpg的名字,后来的把前面的覆盖了。

调整下代码:

 1 # coding:utf-8
 2 import urllib
 3 import re
 4
 5 def get_html(url):
 6     page = urllib.urlopen(url)
 7     html = page.read()
 8     return html
 9
10 reg = r‘src="(.+?\.jpg)" width‘
11 reg_img = re.compile(reg)
12 imglist = reg_img.findall(get_html(‘http://tieba.baidu.com/p/1753935195‘))
13 x = 0
14 for img in imglist:
15     urllib.urlretrieve(img, ‘%s.jpg‘ %x)
16     x += 1

啪啪啪啪啪

第一步完成~



Python爬虫——第一个小爬虫01

时间: 2024-08-10 19:01:36

Python爬虫——第一个小爬虫01的相关文章

Python 基础学习 网络小爬虫

<span style="font-size:18px;"># # 百度贴吧图片网络小爬虫 # import re import urllib def getHtml(url): page = urllib.urlopen(url) html = page.read() return html def getImg(html): reg = r'src="(.+?\.jpg)" pic_ext' imgre = re.compile(reg) imgli

第一个小爬虫——下书网下载小说v1

第一个小爬虫,问题较多! import urllib.request import re import os import string import time import random path = os.getcwd() # 获取当前路径 def get_url(): def open_url(url): req = urllib.request.Request(url) req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0;

Python练习,网络小爬虫(初级)

最近还在看Python版的rcnn代码,附带练习Python编程写一个小的网络爬虫程序. 抓取网页的过程其实和读者平时使用IE浏览器浏览网页的道理是一样的.比如说你在浏览器的地址栏中输入    www.baidu.com    这个地址.打开网页的过程其实就是浏览器作为一个浏览的“客户端”,向服务器端发送了 一次请求,把服务器端的文件“抓”到本地,再进行解释.展现.HTML是一种标记语言,用标签标记内容并加以解析和区分.浏览器的功能是将获取到的HTML代码进行解析,然后将原始的代码转变成我们直接

python学习第一弹:爬虫(抓取博客园新闻)

前言 说到python,对它有点耳闻的人,第一反应可能都是爬虫~ 这两天看了点python的皮毛知识,忍不住想写一个简单的爬虫练练手,JUST DO IT 准备工作 要制作数据抓取的爬虫,对请求的源页面结构需要有特定分析,只有分析正确了,才能更好更快的爬到我们想要的内容. 打开博客园任何一个新闻页面,比如https://news.cnblogs.com/n/570973/,思路是通过这个源页面,并且根据页面中的“上一篇”.“下一篇”等链接,源源不断的爬取其它新闻内容. 浏览器访问https://

通俗易懂的分析如何用Python实现一只小爬虫,爬取拉勾网的职位信息

源代码:https://github.com/nnngu/LagouSpider 效果预览 思路 1.首先我们打开拉勾网,并搜索"java",显示出来的职位信息就是我们的目标. 2.接下来我们需要确定,怎样将信息提取出来. 查看网页源代码,这时候发现,网页源代码里面找不到职位相关信息,这证明拉勾网关于职位的信息是异步加载的,这也是一种很常用的技术. 异步加载的信息,我们需要借助 chrome 浏览器的开发者工具进行分析,打开开发者工具的方法如下: 点击Nerwork进入网络分析界面,这

第一个小爬虫(改进版)——下书网下载小说v2

已知问题: 代理地址需要更新 中断只能重新开始 1 import requests 2 import urllib.request 3 import re 4 import os 5 import string 6 import time 7 import random 8 from urllib import request 9 10 path = os.getcwd() # 获取当前路径 11 12 13 def open_url(url): 14 proxy_list = [ 15 {'h

学习python的第一个小目标:通过requests+xlrd实现简单接口测试,将测试用例维护在表格中,与脚本分开。

小白的学习方式:通过确定一个小目标来想办法实现它,再通过笔记来加深印象. 面对标题中的小目标我陷入了思考....嗯,首先实现利用xlrd库来取出想要的用例 首先用表格准备好用例,如图下: 先试下取number为1的一行用例试试: 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 import xlrd 4 5 xlsurl = r"D:\RequestAPI.xlsx" # 表格文件路径 6 rqapi = xlrd.open_wo

Python第一个程序小爬虫

最近想上手Python.快速入门一门语言的方法就是写个小Demo.Python Demo必须是爬虫了.第一个小爬虫程序有些简陋,高手勿喷. 关于爬虫主要分为三个部分:根据队列中的URL爬取界面.获取内容.保存结果. 程序是以百度网站大全为种子URL,抓取页面中URL依次放入队列中,爬虫从URL队列依次取得新URL继续向外爬取. # -*- coding: utf-8 -*- import urllib2 import re import thread import time class HTML

Python小爬虫——抓取豆瓣电影Top250数据

写LeetCode太累了,偶尔练习一下Python,写个小爬虫玩一玩~ 确定URL格式 先找到豆瓣电影TOP250任意一页URL地址的格式,如第一页为:https://movie.douban.com/top250?start=0&filter=,分析该地址: https:// 代表资源传输协议使用https协议: movie.douban.com/top250 是豆瓣的二级域名,指向豆瓣服务器: /top250 是服务器的某个资源: start=0&filter= 是该URL的两个参数,