• 快速查找资源?试试右上角搜索🔍
  • 本站微信公众号:sharei520
  • Ctrl+D 收藏吾爱共享

Python爬虫入门

我爱自学 1239次浏览 0个评论

什么是爬虫?

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

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

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

Python爬虫入门

一、本文思路

工具: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:getmeizhiurltu.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

Python爬虫入门

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

Python爬虫入门

 

Python爬虫入门

通过分析上面红框的格式,我们可以发现这些图片都要前缀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()读取数据。

Python爬虫入门

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

Python爬虫入门

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

file = open(r"G:getmeizhiurltu.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:getmeizhiurltu.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中存储的是一个包含地址的字符串列表

 

Python爬虫入门

 

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

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

四、最终结果

Python爬虫入门

声明:此资源由本站收集整理于网络,如有侵权,请联系 158175317@qq.com 删除处理。
微信扫描下方二维码,关注吾爱共享网,求资源,找资源,就是这么轻松


qrcode_for_gh_ab8c55a17275_258
若资源失效,请留言,作者会在24h内补上资源
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到