网页爬虫抓取百度图片(Request对象的表单或在网页地址后面提供参数的方法提交数据)

优采云 发布时间: 2021-10-23 07:07

  网页爬虫抓取百度图片(Request对象的表单或在网页地址后面提供参数的方法提交数据)

  Request对象的作用是与客户端交互,采集客户端的Forms、Cookies、超链接,或者采集服务器端环境变量。

  Request对象是客户端向服务器发送一个请求,包括用户提交的信息和客户端的一些信息。客户端可以通过 HTML 表单提交数据,也可以通过在网页地址后提供参数来提交数据。

  然后服务器通过请求对象的相关方法获取这些数据。请求的各种方法主要用于处理客户端浏览器提交的请求中的参数和选项。

  请求收录:请求URL、请求头、请求正文等。

  请求方式:GET/POST

  请求url:url的全称是统一资源定位器,一个网页文档、一张图片、一段视频等可以由url唯一确定

  请求头:User-agent:如果请求头中没有user-agent客户端配置,服务器可能会把你当成非法用户;

  cookies:cookies用于保存登录信息

  一般爬虫都会添加请求头

  例如:获取百度网址的数据请求信息如下:

  2)获取回复内容

  爬虫程序发送请求后,如果服务器可以正常响应,就会得到一个Response,即响应;

  响应信息包括:html、json、图片、视频等,如果没有报错,可以看到网页的基本信息。例如: 获取网页响应内容的流程如下:

  以上内容输出的是网页的基本信息,包括html、json、图片、视频等,如下图所示:

  响应后会返回一些响应信息,例如:

  ①响应状态

  200:代表成功

  301:代表跳转

  404:文件不存在

  403:许可

  502:服务器错误

  ②响应头

  set-cookie:可能不止一个,告诉浏览器保存cookie

  ③预览是网页的源代码

  最重要的部分收录了请求资源的内容,比如网页html、图片、二进制数据等。

  3)分析内容

  解析html数据:解析html数据的方法有正则表达式、xpath、Beautifulsoup、pyquery等第三方解析库。

  解析json数据:可以使用json模块解析json数据

  解析二进制数据:以b的方式写入文件

  4)保存数据

  抓取到的数据以文件的形式保存在本地或者抓取到的内容直接保存在数据库中。数据库可以是 MySQL、Mongdb、Redis、Oracle 等...

  写在最后

  爬行的整个过程可以理解为:蜘蛛想要捕捉某个猎物——>沿着丝线找到猎物——>吃掉猎物;即爬网->解析->存储;

  爬取数据过程中需要用到的参考工具如下:

  爬虫框架:Scrapy

  请求库:请求,硒

  解析库:regular、beautifulsoup、pyquery

  存储库:文件、MySQL、Mongodb、Redis...

  那么让我们现在开始构建一个接受订单的爬虫程序

  大家应该对我们的王者荣耀这个游戏比较熟悉了,下面我们来写一个简单的爬虫程序,轻松进门。

  我们讲了爬虫的基本步骤。第一步是确定目标。

  我们打开浏览器搜索王者荣耀出现这个界面

  

  点击进入

  可以看到这个界面,点击我们的英雄简介

  

  这里是我们需要爬取的图片

  

  鼠标右键,点击检查

  

  点击小箭头,下面我们可以看到这次会议

  点击Irene,可以看到右边的前端html代码会在a href标签下

  

  这就是我们需要的图片地址,那么接下来我们如何使用爬虫技术呢?

  import requests

from pyquery import PyQuery

url="https://pvp.qq.com/web201605/herolist.shtml"

html=requests.get(url).content

print(html)

  

  这已经说明我们的请求成功了,接下来我们需要解析数据

  doc=PyQuery(html)

items=doc('.herolist>li').items()

print(items)

for item in items:

url=item.find('img').attr('src')

# print(url)

urls='https:'+url

name=item.find('a').text()

print(name)

url_content=requests.get(urls).content

  我们是根据hui html的数据来解析的,代码是这样的,大家可以自己试试

  最后,我们需要保存数据

   with open('./picture/'+name+'.jpg','wb')as file:

file.write(url_content)

print('正在下载:%s....%s'%(name,urls))

  我们来看看结果

  

  

  你学会了吗?

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线