Python之爬取网站设计签名(一)

        你也许没学过python这门语言,也不懂python这门语言在爬取内容网站有多么的强悍!

        懂不懂这些似乎并没有那么重要!

        重要的是你看完这篇文章,你就会懂得简单的网页爬取技术!

        今天在这里我就手把手教会一个小白是如何去用python爬取网页内容!

        第一步,新建项目名为Sign

Python之爬取网站设计签名(一)

         第二步,在项目Sign>.idea文件夹下添加sign.py文件

Python之爬取网站设计签名(一)

        第三步,先把爬取网页内容需要用到的模块先添加进来,这些模块分别有什么作用,在这里先不做解释,等用到的时候会在下文解释有何作用

Python之爬取网站设计签名(一)


        这些我们都准备好了,接下来我们就去寻找一个目标,我寻找到的是一个签名设计的网址,http://www.jiqie.com/a/14.htm,首先打开这个网址如下图所示:注意(我用的是火狐浏览器)

Python之爬取网站设计签名(一)

我输入“目标”两个字>按“F12”>然后点击“给我设计”,就会发现以下我们感兴趣的内容

Python之爬取网站设计签名(一)

发现点击“给我设计”的时候会向该网址:http://www.jiqie.com/a/re14.php 发送POST请求,到这里了我们看看发送POST请求时会像该网址发送什么参数呢?

Python之爬取网站设计签名(一)

参数找到了。

        接下来我们就该用代码模拟浏览器发送POST请求获取我们感兴趣的东西了,那我们就回到写代码的步骤了,

        首先写代码模拟浏览器发送POST请求,得要确定两个目标,第一个是发送POST请求的网址,第二发送

        POST请求时是要用到的参数,

        这里的网址是 :http://www.jiqie.com/a/re14.php

       参数是:

         

data = {
    'id':'目标',
    'id1':'905',
    'id2':'14',
    'id3':'#0000FF',
    'id4':'',
    'id5':'',
    'id6':'',
    'idi':'jiqie'
    }
在这里我们把需要发送的参数定义为数据字典的形式进行发送
import requests
import re
from typing import Any

postUrl = "http://www.jiqie.com/a/re14.php"#发送POST请求网址
data = {
    'id':'目标',
    'id1':'905',
    'id2':'14',
    'id3':'#0000FF',
    'id4':'',
    'id5':'',
    'id6':'',
    'idi':'jiqie'
    }
result = requests.post(postUrl, data=data)
print(result)

到这里我们运行代码返回给我们的是一个“200”的状态码!这表示我们模拟浏览器发送POST请求成功了!

既然请求成功了,我们就先回浏览器看下请求成功了,然后给我们返回的东西是什么

查看HTML元素我们发现图片的链接在这里<img src="../i/21/1255.jpg?042421381721848">,看到这个链接我们可以知道了该图片的真正链接地址是:
http://www.jiqie.com/i/21/1255.jpg?042421381721848

既然知道了图片的链接地址那么我们又回到代码部分

到这里我们应该用正则去匹配我们想要的东西了,因为我们想要的是“/i/27/1804.jpg?042422204314887”这个而已,
但是返回给我们的却是“<img src="../i/27/1804.jpg?042422204314887">”,所以在这里我们得用正则去匹配我们想要的东西

到这里一个爬取网址内容的流程就算是完成了!
    但是我们如何把我们爬取下来的图片保存起来呢!通过打印我们发现下载回来得到的图片数据是二进制的


所以我们保存图片的方式是一定是 f=open('第一次.gif','wb'),第二个参数一定是'wb'表示字节流的意思

'wb'
Python之爬取网站设计签名(一)

 
文件保存下来了,我们去看看“第一次.gif”是不是被保存下来了
Python之爬取网站设计签名(一)
Python之爬取网站设计签名(一)
你呢有没有学会?没学会的可以加QQ:761516331一起学习!
下来给源码
import requests
import re
from typing import Any

postUrl = "http://www.jiqie.com/a/re14.php"#发送POST请求网址
data = {
    'id':'目标',
    'id1':'905',
    'id2':'14',
    'id3':'#0000FF',
    'id4':'',
    'id5':'',
    'id6':'',
    'idi':'jiqie'
    }
result = requests.post(postUrl, data=data)#在这里我们使用到了import requests 第一个引用的模块
print(result)
result.encoding='utf-8'#编码方式,不用会出现乱码
html=result.text  # 获取发送post请求时,返回的页面内容     type:Any 这里我们用到了from typing import Any 第三个引用的模块
print(html)

reg='<img src="..(.*?)">'
imagePath=re.findall(reg,html)  #正则匹配 在这里我们使用到了import re 第二个引用的模块
print(imagePath)# ['/i/80/1605.jpg?042422322114249']
print(imagePath[0])# /i/80/1605.jpg?042422322114249
imageUrl="http://www.jiqie.com"+imagePath[0] #拼接获取到发送post请求时返回的正真链接地址 http://www.jiqie.com/i/80/1605.jpg?042422322114249
response=requests.get(imageUrl).content #根据链接下载内容
print(response)
f=open('第一次.gif','wb')
f.write(response)
f.close()
今天是我第一次写博客写得不够好,这博客我写了两个多小时,以后我会好好努力的!如果有什么写得不对的地方望各位兄弟姐妹告知,小弟一定会改!