爬虫入门到精通-网页的下载

网页的下载

本文章属于爬虫入门到精通系统教程第四讲html

在爬虫入门到精通第二讲中,咱们了解了HTTP协议,那么咱们如今使用这些协议来快速爬虫吧web

本文的目标

当你看完本文后,你应该能爬取(几乎)任何的网页chrome

使用chrome抓包

抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操做,也用来检查网络安全。抓包也常常被用来进行数据截取等。segmentfault

第一个案列:抓取轮子哥的动态

  1. 打开轮子哥动态这个网页
    安全

  2. 打开抓包工具cookie

    • 点击F12打开开发者工具网络

    • 点击Network(或者网络)app

    • 按F5刷新下页面(主要是让请求重发一次,这样就能抓到包了)工具

    • 应该会看到以下界面
      post

  3. 找到咱们须要的请求

    • 能够看到以下截图,里面有这么多的请求,那么到底哪个才是咱们须要的呢 ?

    • 这边提供一个小技巧

      • 当你要抓的包是须要按F5刷新才出来的,通常咱们须要的请求都在DOC里面(整个页面有刷新)

      • 当你要抓的包是点击按钮"加载更多"(或者拖到页面最下面会自动加载的,整个页面并无刷新)通常咱们须要的请求都在XHR里面

    • 简单来说就是若是整个页面没有刷新的话,那就是在XHR里面,不然在DOC里面

    • 由于本次抓包整个页面有刷新,因此,咱们须要找的请求在DOC下面,能够看到只有一个请求

  4. 验证请求是对的

    • 有如下两种方法(基本上用1,由于比较快)

      • 在咱们要抓包的页面随便copy出几个字,在Respoinse中使用ctrl+f 查找,若是有找到,说明咱们找到的是对的 (我查找的是"和微软粉丝谈")

        • 把response中全部的内容复制到一个txt中,并更名为"#.html"(这里的#能够随便取)而后打开这个html,看看是否和咱们要抓的同样

    • 若是发现要找的不对,那你能够打开下一个请求检查下

  5. 模拟发送

    • 点击Headers

    • 能够看到请求的url是: https://www.zhihu.com/people/...

    • 方法是: GET

    • requests headers 是(下图中框出来的地方)

    • 因此咱们的代码应该是:

import requests

# 这里的headers就是咱们上图框中的headers
request_headers = {        'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',   
    'Accept-Encoding':'gzip, deflate, sdch, br',
    'Accept-Language':'zh-CN,zh;q=0.8',
    'Cache-Control':'max-age=0',
    'Connection':'keep-alive',
    'Cookie':'',
    'Host':'www.zhihu.com',
    'Referer':'https://www.zhihu.com/',
    'Upgrade-Insecure-Requests':'1',
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
}
#上图中的url
url = "https://www.zhihu.com/people/excited-vczh/activities"
# 上图中的请求方法(get)
z = requests.get(url,headers=request_headers)
print z.content

这段代码简单来讲就是把 咱们抓包看到的用程序来实现

一个小总结

咱们爬取一个网页的步骤能够分为以下:

  1. 打开要爬取的网页

  2. 打开开发者工具,并让请求重发一次(简单讲就是抓包)

  3. 找到正确的请求

  4. 用程序模拟发送

第二个案列:点赞

1.打开要爬取的网页

咱们打开 "知乎 - 与世界分享你的知识、经验和看法"

咱们要点赞的回答是这个

2.打开开发者工具,并让请求重发一次

打开后"点击赞一下",能够看到有好多请求

3.找到正确的请求

咱们一个一个的点开请求看,发现就一个有返回值,并且这个返回值没有意义,那么怎么肯定这个就是咱们要找的呢?

咱们能够点击Headers,看一下发送的参数

vote_up 很明显,就是点赞的意思。因此这个应该就是咱们要找的。

这边说一下,右边"Headers,Preview,Response,Cookies,Timing"是什么意思

咱们常常要看的有,headers 和 preview

headers 里面咱们都有介绍过(请求头,返回头)

preview和response里面的内容是相同的(preview里面的内容格式化了,输出的好看一些),里面的内容是html返回值

cookies 里面是cookie的值,只不过度成了key value的形式

Timing基本用不上,因此也不介绍了(想了解的话能够本身百度...)

4.用程序模拟发送

咱们把headers所有copy,

url也和上面同样

参数也是对的

请求方法是post

可是发现最终返回http code 400,这是为何呢?

让咱们留到后面讲解~

最后再次总结一下

看完本篇文章后,你应该要

  • 能学会抓包

最后你们能够抓一下知乎登陆的包哦~

小提示:当你要抓的网页是会自动跳转的话,那么你须要选中“proserve log”

意思是不要在页面从新加载后清除log(抓知乎登陆的包会用到)


最后的最后,收藏的大哥们,能帮忙点个赞么~

相关文章
相关标签/搜索