资讯专栏INFORMATION COLUMN

Python 从零开始爬虫(零)——爬虫思路&requests模块使用

YanceyOfficial / 1221人阅读

摘要:定制筛选器,对内容进行筛选重点。审查元素这是浏览器自带的工具,提供抓包和检查网页源码的功能,供使用者分析网页。超时设置,如果服务器在指定秒数内没有应答,抛出异常,用于避免无响应连接,整形或浮点数。返回连接状态,正常。

前言

python 3.6 !!

本爬虫系列是面对有Python语法基础的读者写的,如果你没学过python,emmmm.....也没关系,你或许能从每篇文章中学到一些爬虫的思路;如果你的python基础语法已经应用自如,那是极好的。

本系列的教程和实例均总结于笔者的自学经历,如有不足欢迎指正和讨论,问题我会尽量回复,也希望大家能有所收获。

爬虫真好玩.jpg


废话不多说,赶紧开始这条不归路吧

爬虫思路

无思路不成器,如果你怎么想都想不出爬虫的原理,不妨来看下我们平时是如何上网的,大概就是这样:
   ①点开目标网址→→[可选:登录/回复]→→②浏览全页筛选出价值内容→→③如果很喜欢,还会拷贝下载回来

所以爬虫归结起来也就这几步:

构造目标网址(重点

发起请求(request),相当于点开网页。

获取网页内容()。

定制筛选器,对内容进行筛选(重点)。

把爬取结果保存到容器里。

本节学习的requests模块将会实现二,三步,其他步骤和注意事项将会在后续文章中展示出来。

F12审查元素

这是浏览器自带的工具,提供抓包和检查网页源码的功能,供使用者分析网页。也是学爬虫必须要学会的工具,一个优秀的虫爸/虫妈应该花更多的时间在网页分析和debug上。

使用非常简单,打开任一浏览器(笔者的是google chrome),按F12或鼠标右键检查。

选择Element是查看网页源码,是树结构的html文档,里面有要爬取的内容。

选择Network是查看本地和服务器端交互的包,可以从中获取目标网址和headers。

requests模块

为什么选择requests,因为它能完全胜任python自带的urllib模块,简化了不必要的功能的同时让使用更加简单。

安装

非常简单,打开cmd,直接pip安装

pip install requests

或pycharm中搜索requests安装

简单使用

首先呈上官方文档,有中文版,欢迎来啃。
下面主要介绍两种方法:get和post

get,就是本地向服务器索取的意思,服务器检查请求头(request headers)后,如果觉得没问题,就会返回信息给本地。

r = requests.get(url,**args)#返回一个Response对象,我们可以从这个对象中获取所有我们想要的信息

post,就是本地要向服务器提交一些数据的意思,服务器还是会检查请求头,如果提交的数据和请求头都没问题,就会返回信息给本地。

r = requests.post(url,**args)#也是返回Response对象
参数详解

get和post方法中有许多参数可以使用,部分参数后面会详解。

url:就是目标网址,接收完整(带http)的地址字符串。

headers:请求头,存储本地信息如浏览器版本,是一个字典。

data:要提交的数据,字典。

cookies:cookies,字典。

timeout:超时设置,如果服务器在指定秒数内没有应答,抛出异常,用于避免无响应连接,整形或浮点数。

params:为网址添加条件数据,字典。

payload = {"key1": "value1", "key2": "value2"}
r = requests.get("http://httpbin.org/get", params=payload)
#相当于目标网址变成了http://httpbin.org/get?key2=value2&key1=value1

proxies:ip代理时使用,字典。

Response对象使用

从这个对象中获取所有我们想要的信息非常简单,毕竟爬虫要的数据主要就三种,html源码,图片二进制数据,json数据,Response对象一次性满足你三个愿望。

r.encoding = "ISO-8859-1"    #指定r.text返回的数据类型,写在r.text之前。
r.text    #默认以unicode形式返回网页内容,也就是网页源码的字符串。

r.content    #以二进制形式返回网页内容,下载图片时专用。
r.json()    #把网页中的json数据转成字典并将其返回。

#还有一些很少用到的方法。
r.headers    #返回服务器端的headers,字典。
r.status_code    #返回连接状态,200正常。
小实例

requests 学完后就可以到处试试了,如果红了(抛出异常),那大概是服务器拒绝你了,毕竟伪装什么的还没提到,服务器知道你是虫子就把你踢掉了。

import requests
r = requets.get("http://cn.python-requests.org/zh_CN/latest/")
with open("test.txt","w",encoding = "utf-8") as file:#编码要对应
    file.write(r.text)
    #然后打开看看吧,是不是和F12看到的源码一样,只不过是把分支全展开了而已。

小提示:并不是所有网站的F12源码和爬取源码是一致的,网站有动态的,也有静态的;有防爬虫的,也有敞开大门任意爬的。关于对策之后会讲到。

第一次写文章,挺累的,我需要做(wan)几(ji)道(pan)数(you)学(xi)题放松一下自己才行。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41526.html

相关文章

  • Python 开始爬虫(一)——爬虫伪装&反“反爬”

    摘要:总的来说有两种反爬策略,要么验证身份,把虫子踩死在门口要么在网站植入各种反爬机制,让爬虫知难而退。本节内容就着这两种反爬策略提出一些对策。内嵌反爬很灵活,没有什么固定的代码格式,要花时间去分析出来。   之前提到过,有些网站是防爬虫的。其实事实是,凡是有一定规模的网站,大公司的网站,或是盈利性质比较强的网站,都是有高级的防爬措施的。总的来说有两种反爬策略,要么验证身份,把虫子踩死在门口...

    int64 评论0 收藏0
  • Python 开始爬虫(五)——初遇json&爬取某宝商品信息

    摘要:能看到这里说明快进入动态网页爬取了,在这之前还有一两个知识点要了解,就如本文要讲的及其数据提取是什么是轻量级的文本数据交换格式,符合的格式的字符串叫字符串,其格式就像中字符串化后的字典,有时字典中还杂着列表字典,但是里面的数据都被双引号包着   能看到这里说明快进入动态网页爬取了,在这之前还有一两个知识点要了解,就如本文要讲的json及其数据提取 JSON 是什么   json是轻量级...

    2bdenny 评论0 收藏0
  • Python 开始爬虫(三)——实战:requests+BeautifulSoup实现静态爬取

    摘要:前篇全片都是生硬的理论使用,今天就放个静态爬取的实例让大家体验一下的使用,了解一些背后的原理。给出网站打开右键检查第一个电影,分析源码先,发现每个标签就对应着一个电影的信息。 前篇全片都是生硬的理论使用,今天就放个静态爬取的实例让大家体验一下BeautifulSoup的使用,了解一些背后的原理。 顺便在这引入静态网页的概念——静态网页是指一次性加载所有内容的网页,爬虫一次请求便能得到所...

    Codeing_ls 评论0 收藏0
  • Python爬虫建站入门手记——开始建立采集站点(二:编写爬虫

    摘要:接上回第二部分,编写爬虫。进入微信嵌套选择图片和上传图片接口,实现一键上传图片,遇到问题看吧,我现在已经可以通过爬虫获取的提问标题了。微信故意省略想做小偷站的,看到这里基本上就能搞出来了。下一篇,采集入库 上回,我装了环境 也就是一对乱七八糟的东西 装了pip,用pip装了virtualenv,建立了一个virtualenv,在这个virtualenv里面,装了Django,创建了一个...

    Codeing_ls 评论0 收藏0
  • 开始打造个人专属命令行工具集——yargs完全指南

    摘要:自阮大神的文章发布以来,有了一些改动,添加有很多有用的功能,特别是这个功能,对打造命令行工具集合非常有用,所以写一个新版本的教程还是有必要的。 前言 使用命令行程序对程序员来说很常见,就算是前端工程师或者开发gui的,也需要使用命令行来编译程序或者打包程序 熟练使用命令行工具能极大的提高开发效率,linux自带的命令行工具都非常的有用,但是这些工具都是按照通用需求开发出来的,如果有一些...

    wanghui 评论0 收藏0

发表评论

0条评论

YanceyOfficial

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<