其实我们或多或少都是听说过爬虫这个概念,这个东西的技术栈其实也比较成熟了。

其实在我的理解中,爬虫嘛,就是给自己伪装一下,装成是正常的访问请求,然后获取到网站或者APP中的数据资源的一种技术手段。

当然目前大部分爬虫都是python写的,毕竟python丰富的第三方库资源还有语言优势摆在这里。所以,这里也是通过python进行爬虫的编写。

一、项目需求

一个香港的老板应该是,他给个网址

里面大概是这样的


点进去那个箭头的之后是个超链接,然后,要把这个信息爬下来。


需求挺明确的,而且这个网站,连一些基础的反爬手段都没有。

二、分析网页

搞到所有律师的信息的流程清晰的分为两个步骤:1.搞到所有律师的个人介绍的超链接;2.然后再对所有链接进行访问。

可以看到哈,这个记录还是有点多的,11339条,30个记录一页。要全部拿下来不是一件简单的事,

1.找到所有页面的链接:

这个是第一页。

这个是第二页。

让我们来看看他的链接:

第一页:https://www.hklawsoc.org.hk/zh-HK/Serve-the-Public/The-Law-List/Members-with-Practising-Certificate?name=&jur=&sort=1

第二页:https://www.hklawsoc.org.hk/zh-HK/Serve-the-Public/The-Law-List/Members-with-Practising-Certificate?name=&jur=&sort=1&pageIndex=2#tips

找到不同了嘛.第二页多出了一个字段:&pageIndex=2#tips 可以把这个数字换成1和3,试一下.

&pageIndex=1#tips

&pageIndex=3#tips

所以所有页面的规律就找到了,用来访问的链接如下:

    for i in range(1, 11339//30):        print(i/(11339//30),end=' ')        url = "https://www.hklawsoc.org.hk/zh-HK/Serve-the-Public/The-Law-List/Members-with-Practising-Certificate?name=&jur=&sort=1&pageIndex="+str(i)+"#tips"

这个规律真的很简单,所以就用来爬虫的入门了.

2.找到所有律师的个人页面链接:

这个就是一个页面分析的任务了。


还记得我们刚才是点这个链接访问的这个律师个人信息界面吧,这里面必然有着个人界面的超链接,我们需要的就是把它扒出来出来就可以了。下面我们在这个页面,按F12,查看,操作如下:

  1. 点击F12,进入下面的界面

2. 点箭头指向的按钮


  1. 然后点击你想扒出超链接的元素

点击后:


这个超链接很显眼了吧。点进去,正好是我们想要的链接。


三、开始爬取

还记得我们开始说的嘛,爬虫是封装成正常的请求去访问页面然后下载我们想要的资源,对吧所以,这里细化为两个步骤:

第一步:请求页面资源

爬虫的技术获取网页的手段最基础的就是python的requests方法了。我们这里用的也是这个方法。

代码如下:

import requestsheaders = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'}

for i in range(1, 11339//30):    print(i/(11339//30),end=' ')    url = "https://www.hklawsoc.org.hk/zh-HK/Serve-the-Public/The-Law-List/Members-with-Practising-Certificate?name=&jur=&sort=1&pageIndex="+str(i)+"#tips"    response = requests.get(url, headers=headers)    html = response.content.decode('utf-8', 'ignore')

这里response就是我们请求下来的页面资源了,经过源码解析获取到了html源码。


当然,你可能会有疑问这个headers从哪来的,哪里规定的。

每个浏览器都有自己的headers,因为headers要模仿你自己的浏览器向网页发送信息。如果使用Python进行爬取页面时,使用了别人的headers可能会导致爬取不到任何数据(因为代码在你自己的电脑运行,所以无法模拟别人的浏览器)

当然其实用别人也可以,有的网站他可能安全做的没有那么好,就都还可以正常访问。当然,所以如何查找自己headers也很重要,具体步骤如下:

  1. 随便打开一个网页,例如打开我们这个页面,右键点击‘检查’或者按F12,出现下图页面。

  1. 点击network

  1. F5刷新

4. 在name框随便点一个选项,在右侧点击‘headers’选项,在最下方找到‘User-Agent:’,粘贴到自己代码即可。如下图



第二步:解析页面资源

本文由 mdnice 多平台发布

爬虫入门实战(如何分析页面和构建requests请求)相关推荐

  1. 怎么加载csv_python爬虫入门实战(四)!爬取动态加载的页面

    今天的主题是爬取动态网页的经验分享,以cocos论坛为例子进行分享.(官方不会打我吧 ) 配置环境 为什么选择cocos论坛呢?因为自己在浏览论坛时,发现标题内容会随着滚动条的位置而动态添加. 环境: ...

  2. python爬虫入门实战---------一周天气预报爬取_Python爬虫入门实战--------一周天气预报爬取【转载】【没有分析...

    Python爬虫入门实战--------一周天气预报爬取[转载][没有分析 Python爬虫入门实战--------一周天气预报爬取[转载][没有分析] 来源:https://blog.csdn.ne ...

  3. python爬虫动态加载_python爬虫入门实战(四)!爬取动态加载的页面!

    今天的主题是爬取动态网页的经验分享,以cocos论坛为例子进行分享.(官方不会打我吧 ) 配置环境 为什么选择cocos论坛呢?因为自己在浏览论坛时,发现标题内容会随着滚动条的位置而动态添加. 环境: ...

  4. layui 如何动态加载局部页面_python爬虫入门实战(四)!爬取动态加载的页面!

    今天的主题是爬取动态网页的经验分享,以cocos论坛为例子进行分享.(官方不会打我吧 ) 配置环境 为什么选择cocos论坛呢?因为自己在浏览论坛时,发现标题内容会随着滚动条的位置而动态添加. 环境: ...

  5. 爬虫入门实战第一站——梨视频视频爬取

    爬虫入门实战第一站--梨视频视频爬取 简介 博主最近重新开始了解爬虫,想以文字方式记录自己学习和操作的过程.本篇文章主要是使用爬虫爬取梨视频网站中的视频并下载到本地,同时将视频简介和视频网站保存在ex ...

  6. python3 [爬虫入门实战]爬虫之scrapy安装与配置教程

    python3 [爬虫入门实战]爬虫之scrapy安装与配置教程 标签: python爬虫scrapy 2017-07-08 15:38 77人阅读 评论(0) 收藏 举报 分类: python3爬虫 ...

  7. python xpath入门_python爬虫入门实战(三)!xpath 和 csv!

    最近有小伙伴说正则表达式学不懂?那有什么替代方案呢?一起往下看吧! 在前两篇文章我们已经学了一些基本技巧.但是之前都是用正则表达式来解析内容的,可能有小伙伴对正则表达式不理解,于是乎,我找到一个相对好 ...

  8. Python爬虫入门实战之猫眼电影数据抓取(实战篇)

    项目实战 静态网页实战 本节我们将为大家展现一个完整爬虫的大致过程,此次项目内容为提取猫眼电影TOP100榜中的所有电影信息并存储至CSV文件中,其首页地址为http://maoyan.com/boa ...

  9. Python爬虫入门实战之猫眼电影数据抓取(理论篇)

    前言 本文可能篇幅较长,但是绝对干货满满,提供了大量的学习资源和途径.达到让读者独立自主的编写基础网络爬虫的目标,这也是本文的主旨,输出有价值能够真正帮助到读者的知识,即授人以鱼不如授人以渔,让我们直 ...

最新文章

  1. 广搜破解密码(HDU1195)
  2. 使用C#的HttpWebRequest模拟登陆网站(续)
  3. [导入]关于复制目录架构
  4. linux配置redis服务,Linux下安装Redis并设置相关服务
  5. Git 2.19 对Diff、Branch和Grep等做了改进
  6. c语言结构体语法分析,C语言结构体struct的语法解析
  7. 搬砖的也能学Python----if - elif 语句
  8. linux下source filename,./filename,. filename,......
  9. LINUX 命令手册
  10. 王思聪吃热狗火了,程序员开发各种恶搞小程序!王校长:我不要脸的啊
  11. log函数 oracle power_Oracle 函数大全详细介绍
  12. C#实现封装SPC过程能力工具类ProcessCababilityHelper
  13. 在计算机中正确的邮件写信格式,电子邮件格式怎么写
  14. ultravnc 反向连接_C程序以反向显示链接列表
  15. 亚马逊云科技入门资源中心,从0到1轻松上云
  16. 关于Filename too long解决方法
  17. Linux之jkd、tomcat、mysql安装
  18. 侯捷先生的Design Patterns高级课程
  19. c++学习笔记-提高编程-模板(哔站-黑马程序员c++教学视频)
  20. 东莞厚街工业机器人展会_东莞厚街国际机械展暨工业自动化工业机器人展览会...

热门文章

  1. 中兴通讯携手CLAA合作伙伴,开创共享共建物联网新时代
  2. 京东大客户开放平台VOP接口对接记录
  3. 万字综述智能驾驶车载激光雷达关键技术与应用算法
  4. scratch一级考纲
  5. 彻底理解numpy中的axis
  6. 网站响应速度慢,这些原因不可不知?
  7. tomcat启动“成功”,但是浏览器无法访问
  8. 图像的拉普拉斯算子之c++实现(qt + 不调包)
  9. 深度学习相关基础理论
  10. 【106】360查字体-查询本地字体版权是否可商用