Python爬虫自学之第(零)篇——爬虫思路和request模块使用

题外话:

《Pi Network 免费挖矿国外热门项目 一个π币大约值3元到10元》相信过去BTC的人,信不信未来的PI,了解一下,唯一一个高度与之持平的项目

爬虫思路

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

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

  1. 构造目标网址(重点
  2. 发起请求(request),相当于点开网页。
  3. 获取网页内容()。
  4. 定制筛选器,对内容进行筛选(重点)。
  5. 把爬取结果保存到容器里。

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

 

谷歌或者火狐的F12审查元素

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

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

  • 选择Element是查看网页源码,是树结构的html文档,里面有要爬取的内容。
  • 选择Network是查看本地和服务器端交互的包,可以从中获取目标网址和headers。

 

requests模块

打开cmd,直接pip安装:pip install 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源码和爬取源码是一致的,网站有动态的,也有静态的;有防爬虫的,也有敞开大门任意爬的。关于对策之后会讲到。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[css] css的哪个属性可以把所有元素或其父元素的属性重置呢?

[css] css的哪个属性可以把所有元素或其父元素的属性重置呢? all:unset个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

pycharm中更新pip版本的问题

经常使用Python的都知道pip,但有时候,下载某个模块不成功,提示信息如下 pytharm查看自带的pip版本 解决方式一: pytharm的terminal里卸载pip再安装pip 如果还不行,解决方式二 去你当前的项目路径下找到lib文件夹下的…

[css] 如何取消从父级元素继承下来的CSS样式呢?

[css] 如何取消从父级元素继承下来的CSS样式呢? 如果是恢复单个属性样式,例如font-size,可以使用 font-size: initial; 如果是将所有属性样式恢复为默认状态,可以使用 all: initial; 个人简介 我是歌谣,欢迎和大家…

小程序的wx.onAccelerometerChange

https://www.2cto.com/kf/201802/724174.html(copy) 也许有人会问,小程序中都是竖直app形态,要横竖屏判断有什么用?即使判断出了横屏状态,你能把小程序横过来?答案是不能的,但是判断当前设备处于横屏或者…

Python爬虫自学之第(②)篇——BeautifulSoup解析网页

题外话: 《Pi Network 免费挖矿国外热门项目 一个π币大约值3元到10元》相信过去BTC的人,信不信未来的PI,了解一下,唯一一个高度与之持平的项目 学了requests,了解了伪装技巧后,终于能爬到些比较正常的网页…

[css] 说下你对css样式的这几个属性值initial、inherit、unset、revert的理解

[css] 说下你对css样式的这几个属性值initial、inherit、unset、revert的理解 initial(初始)、inherit(继承)、unset(未设置)、revert(还原) inherit可以继承父级元素的属性&#x…

Django通过中间件实现登录验证demo

前提:中间件版的登录验证需要依靠session,所以数据库中要有django_session表。 1 from django.conf.urls import url2 from django.contrib import admin3 from app01 import views4 5 urlpatterns [6 url(r^admin/, admin.site.urls),7 url(r^…

Python爬虫自学之第(③)篇——实战:requests+BeautifulSoup实现静态爬取

题外话: 《Pi Network 免费挖矿国外热门项目 一个π币大约值3元到10元》相信过去BTC的人,信不信未来的PI,了解一下,唯一一个高度与之持平的项目 前篇全片都是生硬的理论使用,今天就放个静态爬取的实例让大家体验一下B…

[css] 如何解决css加载字体跨域的问题?

[css] 如何解决css加载字体跨域的问题? 刚才碰到一个css加载字体跨域问题,记录一下。 站点的动态请求与静态文件请求是不同的域名的。站点的域名为 www.domain.com,而静态文件的域名为 st.domain.com。 问题: 页面中加载css文件&…

django cookie、session

1.cookie (1)什么是cookie? 服务器让浏览器保存在浏览器本地的键值对 (2) 为什么要有cookie? 因为http协议无状态,每一次访问请求没有任何关系,无法保存状态 (3)cookie的特点? cookie是由服务器给浏览器设置的 在同一个浏览器中访…

Python爬虫自学之第(④)篇——强大的正则表达式,re模块

题外话: 《Pi Network 免费挖矿国外热门项目 一个π币大约值3元到10元》相信过去BTC的人,信不信未来的PI,了解一下,唯一一个高度与之持平的项目 如果把BeautifulSopu比喻成通过线索一步步接近目标的侦探的话,那么正则…

[css] 当使用@font-face的时候,为什么src中要加入local呢?

[css] 当使用font-face的时候,为什么src中要加入local呢? 网上的说法片面不一,CSDN和掘金都没见到正确回复,然后我在MDN找到了比较明确的说法。MDN的 font-face 这是一个CSS 规则 ,它允许网页开发者为其网页指定在…

Python爬虫自学之第(⑤)篇——爬取某宝商品信息

题外话: 《Pi Network 免费挖矿国外热门项目 一个π币大约值3元到10元》相信过去BTC的人,信不信未来的PI,了解一下,唯一一个高度与之持平的项目 能看到这里说明快进入动态网页爬取了,在这之前还有一两个知识点要了解&…

Vue通信、传值的多种方式,详解

Vue通信、传值的多种方式,详解 转自:https://blog.csdn.net/qq_35430000/article/details/79291287 一、通过路由带参数进行传值 ①两个组件 A和B,A组件通过query把orderId传递给B组件(触发事件可以是点击事件、钩子函数等) this.…

[css] 你有使用过font-size-adjust属性吗?说说它的作用是什么?

[css] 你有使用过font-size-adjust属性吗?说说它的作用是什么? 很少用。 实际应用场景: 实际应用场景在指定字体时,出于安全考虑,人们通常会为一个元素指定多种字体,希望当首选字体不可用时,让…

Python代写CSSE1001/7030 python程序作业、代做python CSSE1001/7030程序作业、 代写CSSE1001/7030 python 作业...

Python代写CSSE1001/7030 python程序作业、代做python CSSE1001/7030程序作业、 代写CSSE1001/7030 python 作业UnoAssignment 2CSSE1001/7030Semester 2, 2018Version 1.0.110 marksDue Friday 21st September, 2018, 20:30IntroductionThis assignment follows a programming…

selenium等待定位标签加载完再执行

遇到的问题描述 我们经常会碰到用selenium操作页面上某个元素的时候, 需要等待页面加载完成后, 才能操作。 否则页面上的元素不存在,会抛出异常。 比如: 一个动态网页使用了ajax的异步加载,我们需要等待元素加载…

[css] body{height:100%}和html,body{height:100%}有什么区别?为什么html要设置height:100%呢,html不就是整个窗口吗?

[css] body{height:100%}和html,body{height:100%}有什么区别?为什么html要设置height:100%呢,html不就是整个窗口吗? html是body的父级,在缺少了父级的宽高之后,如果给body设置一个渐变色背景的话将不会正常显示。个…

数据类型的操作

时间数据类型 1.mongo中存储时间大多为ISOData 2.获取当前时间   1. 使用new Date() 自动生成当前时间   2. 使用 ISODate() 生成当前时间   3. 获取计算机时间生成时间格式字符串 Date() 3.ISODate()   功能: 生成mongodb时间存储类型   参数&#xff1a…

python+selenium 浏览器无界面模式运行

以Chrome浏览器为例: 方法一: from selenium.webdriver import Chrome, ChromeOptionsopt ChromeOptions() # 创建Chrome参数对象 opt.headless True # 把Chrome设置成可视化无界面模式,windows/Linux 皆可 driv…