Python爬虫简单入门教程(1) 您所在的位置:网站首页 Python爬虫之入门保姆级教程学不会我去你家刷厕所 Python爬虫简单入门教程(1)

Python爬虫简单入门教程(1)

2024-06-02 04:52| 来源: 网络整理| 查看: 265

..表示列表项 表示图片 ..表示标题 ..表示超链接_

代码如下

Python 点击访问 CSDN mei0351 Python爬虫

认识网页结构

HTML CSS JavaScript 关于爬虫的合法性

几乎每一个网站都有一个名为 robots.txt 的文档,当然也有部分网站没有设定 robots.txt。对于没有设定 robots.txt 的网站可以通过网络爬虫获取没有口令加密的数据,也就是该网站所有页面数据都可以爬取。如果网站有 robots.txt 文档,就要判断是否有禁止访客获取的数据。 以B站为例,在浏览器中访问 https://www.bilibili.com/robots.txt,如图所示。

User-Agent:*

Disallow:/

除前面指定爬虫外,不允许其他爬虫获取任何数据。

使用requests库请求网站

网页请求的过程分为两个环节:

Request (请求):每一个展示在用户面前的网页都必须经过这一步,也就是向服务器发送访问请求。Response(响应):服务器在接收到用户的请求后,会验证请求的有效性,然后向用户(客户端)发送响应的内容,客户端接收服务器响应的内容,将内容展示出来,就是我们所熟悉网页请求的方式也分为两种:GET:最常见的方式,一般用于获取或者查询资源信息,也是大多数网站使用的方式,响应速度快。POST:相比 GET 方式,多了以表单形式上传参数的功能,因此除查询信息外,还可以修改信息。

使用GET方式抓取数据

在Pycharm中输入如下代码

import requests #导入requests包 url = 'http://www.bilibili.com/' strhtml = requests.get(url) #Get方式获取网页数据 print(strhtml.text) 使用 POST 方式抓取数据 使用BeautifulSoap解析网站 清洗和组织数据 爬虫攻防战

爬虫是模拟人的浏览访问行为,进行数据的批量抓取。当抓取的数据量逐渐增大时,会给被访问的服务器造成很大的压力,甚至有可能崩溃。换句话就是说,服务器是不喜欢有人抓取自己的数据。那么,网站方面就会针对这些爬虫者,采取一些反爬策略。 服务器第一种识别爬虫的方式就是通过检查连接的 useragent 来识别到底是浏览器访问,还是代码访问的。如果是代码访问的话,访问量增大时,服务器会直接封掉来访 IP。 那么应对这种初级的反爬机制,我们应该采取何种举措? 在进行访问时,我们在开发者环境下不仅可以找到 URL、Form Data,还可以在 Request headers 中构造浏览器的请求头,封装自己。服务器识别浏览器访问的方法就是判断 keyword 是否为 Request headers 下的 User-Agent。

因此,我们只需要构造这个请求头的参数。创建请求头部信息即可,代码如下:

headers={‘User-Agent’:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36’} response = request.get(url,headers=headers)

写到这里,很多读者会认为修改 User-Agent 很太简单。确实很简单,但是正常人1秒看一个图,而个爬虫1秒可以抓取好多张图,比如 1 秒抓取上百张图,那么服务器的压力必然会增大。也就是说,如果在一个 IP 下批量访问下载图片,这个行为不符合正常人类的行为,肯定要被封 IP。 其原理也很简单,就是统计每个IP的访问频率,该频率超过阈值,就会返回一个验证码,如果真的是用户访问的话,用户就会填写,然后继续访问,如果是代码访问的话,就会被封 IP。这个问题的解决方案有两个,第一个就是常用的增设延时,每 3 秒钟抓取一次,代码如下:

import time time.sleep(3)

但是,写爬虫的目的是为了高效批量抓取数据,这里设置 3 秒钟抓取一次,效率未免太低。其实,还有一个更重要的解决办法,那就是从本质上解决问题。不管如何访问,服务器的目的就是查出哪些为代码访问,然后封锁 IP。解决办法:为避免被封 IP,在数据采集时经常会使用代理。当然,requests 也有相应的 proxies 属性。首先,构建自己的代理 IP 池,将其以字典的形式赋值给 proxies,然后传输给 requests,代码如下:

proxies={ "http":"http://10.10.1.10:3128", "https":"http://10.10.1.10:1080", } response = requests.get(url, proxies=proxies) 附言:

本文仅对 Python 爬虫及实现过程做了简明扼要地介绍,仅能使初学者对 python 爬虫有一个粗浅的认识,并不能让你完全掌握 Python 爬虫。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有