Python爬虫入门--第一个简单爬虫

什么是爬虫?

1、定义:网络爬虫(Web Spider),又被称为网页蜘蛛,按照一定的规则,自动地抓取网站信息的程序或者脚本。
2、简介:网络蜘蛛是一个很形象的名字。如果把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页,从 网站某一个页面开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。
3、爬虫流程:①先由urllib的request打开Url得到网页html文档——②浏览器打开网页源代码分析元素节点——③通过正则表达式提取想要的数据(正则表达式是最简单的一种方式,还有许多比较复杂的,比如Beautiful Soup或xpath等)——④存储数据到本地磁盘或数据库(抓取,分析,存储)
4、主要用途:抓取我们想要的数据,比如:12306的火车运行数据、网站的图片、证监会的股票数据等,主要作为一种数据获取手段,以便接下来的信息分析、挖掘、处理从而转化成信息,并利用这些信息获得“利益”,比如:今日头条的精准推送。

5、爬虫基本流程:如下图所示:
爬虫的功能就是把网页源代码想办法爬下来,然后分析出需要的内容。总结起来就是2个部分:
1.(本文的比较简单,使用了request,主流比较复杂的都使用requests)
2.提取(本文的比较简单,使用了正则表达式,主流的都使用xpath等)

所以,整个爬虫需要掌握的技能,就是如何高效的爬,如何快速的分析提取所需要的内容。

一、本文思路

工具:win8-64bit+Anaconda的spider软件
本教程主要内容是:爬取http://www.27270.com/ent/meinvtupian这个网页所有美女图片,并将其存储在某个文件夹。本教程的工作为了简化难度,主要分为两部分:

1.获取图片的路径,存储到指定的文本文件中

这部分主要完成数据的爬和提取,是整个程序的核心。

2.调用上述的文本,进行图片的下载

这部分主要完成数据的处理,并将其转换成图片。

二、第一部分

1、首先附上代码

import urllib.request
import re
url = "http://www.27270.com/ent/meinvtupian/"  #获取url,得到我们要爬取的网页页面地址
pat = 'http://t1.27270.com/uploads/tu(.*?)jpg'  #匹配规则,通过分析得到规律
data = urllib.request.urlopen(url).read().decode("gb2312") #读取网页的内容并解码
relut = re.compile(pat).findall(data)       #会返回一个列表
file = open(r"G:\getmeizhi\urltu.txt", "w", encoding="gb2312")  #这里我定义了一个自己的存储路径,大家可以根据自己的路径修改
for i in relut:
    file.write("http://t1.27270.com/uploads/tu")  #先写进开头
    file.write(i)        #将提取的内容写入文件
    file.write("jpg")    # 将格式写入
    file.write("\n")    #表示换行

2、然后分析代码

1、得到我们需要获取的网页:http://www.27270.com/ent/meinvtupian


2、分析网页的数据,以便制定正则表达式
在上图网页的界面下按F12或者鼠标右键,选择查看“源文件”出现如下界面,为了快速锁定我们要查找的数据“图片”,ctrl+f快速搜索“.jpg”



通过分析上面红框的格式,我们可以发现这些图片都要前缀http://t1.27270.com/uploads因此我们得到正则表达式如下:
pat = 'http://t1.27270.com/uploads/tu(.*?)jpg
3、读取网页内容并解码
解码的格式,网页的源文件有,可以搜关键词charset得到。
data = urllib.request.urlopen(url).read().decode("gb2312")
其中urlopen()是request模块的一个函数,当得到url打开后用read()读取数据。

4、爬取网页数据,并返回列表
relut = re.compile(pat).findall(data)
这行代码是先用compile()函数得到正则对象,然后传入数据,用findall()函数查找。
注意的是:findall()函数返回的是列表,并且只返回分组内的内容,而不是返回完整的数据串,此时只返回下图蓝框中括号()的内容。

5、将爬取的内容存储到txt文件中
用到了两个知识点:file文件的操作和for函数的使用。
注意:urltu.txt这个文件不用事先存在

file = open(r"G:\getmeizhi\urltu.txt", "w", encoding="gb2312")  #这里我定义了一个自己的存储路径,大家可以根据自己的路径修改。
for i in relut:
    file.write("http://t1.27270.com/uploads/tu")  #先写进开头
    file.write(i)        #将提取的内容写入文件
    file.write("jpg")    # 将格式写入
    file.write("\n")    #表示换行

file文件操作有三步:

  • 得到file对象
  • 对file对象进行读或写
  • 关闭file对象

三、第二部分

1、首先附上代码

#第二部分:将urltu.txt中的图片链接转换成图片 
import os
from  urllib import request
read = open(r"G:\getmeizhi\urltu.txt", "r", encoding="gb2312")
s = read.readlines()
print("正在爬取,请稍后!")
q = 1                       #设置图片名称从1开始
os.chdir(r"G:\美女图片")     #指定存储路径
for i in s:
    request.urlretrieve(i, filename=str(q)+".jpg")   # i为图片地址,filename是图片的名称   
    q=q+1
print("爬取完成!")

注意:''G:\美女图片''这个文件夹必须提前建立好

2、然后分析代码

1、首先按行读出txt文件中数据。

s = read.readlines()
print(s)

此时s中存储的是一个包含地址的字符串列表



2、利用txt里面的包含地址的字符串依次下载图片
并设定了图片保存时的命名格式。

for i in s:
    request.urlretrieve(i, filename=str(q)+".jpg")   # i为图片地址,filename是图片的名称   
    q=q+1

四、最终结果


Github的代码链接

参考文献

【Python爬虫】入门知识
Python3 爬虫快速入门攻略
python爬虫之美女图片爬取

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容