python爬虫基础知识

python爬虫为什么能实现?

我们平时使用浏览器访问网页获取信息、下载图片视频,主要步骤有三步:
第一步,浏览器向特定服务器发送请求;
第二步,服务器响应请求,将所需数据返回到自己的电脑中;
第三步,浏览器解析返回的数据,以一定的格式呈现数据。

python网络爬虫可以使用不同的函数、库,来实现上述的三个步骤,从而自动、批量获取想要的信息。

向特定服务器发送请求有不同的类型,其中最常用的是GET请求和POST请求,可以使用经典requests库中的get函数和post来实现;
在得到服务器返回的数据response后,可以使用beautifulsoup库来寻找想要的数据(beautifulsoup库简洁明了,使用方便,推荐入门学习使用)(最好学习一下正则表达式和re库,来进行所需信息的匹配查找);
在获取想要的数据后,可以使用json库或csv库将数据保存为json或csv格式(数据量比较大时最好保存到数据库中,但非分布式爬虫一般没有这个必要)。

在爬虫过程中常出现一些问题,有些可以使用替代的python爬虫库解决

学会requests、beautifulsoup、json、csv库的基本使用方法,就可以试着写一写最基础的爬虫了,如果遇到其他的问题,有时可以使用其他的爬虫库来解决。

遇到URL格式化的问题(如URL不同部分拆分、汉字与URL编码格式转换等),可以使用urllib中的parse模块中的相应函数解决(urllib库的urlopen函数使用cookie、headers等参数不方便,不推荐使用)。

对于一些使用http2.0协议的网站,使用requests可能会无法获取数据报错,可使用httpx库来代替。

对于一些使用js渲染且不使用ajax的网站,可以使用自动化测试工具(如webdriver)调用浏览器,从而绕过js渲染,实现“所见即所爬”(js逆向难度一般都比较高,不是太多的数据,能直接绕过就不要花费太多时间精力了吧)。

在没有使用ip代理时,最好在每次发送请求后,随机暂停一段时间,再向服务器发送请求,可以有效防止因为ip访问太频繁导致被ip被封的问题(推荐使用random.randint和time.sleep函数)。

如果想要爬虫获取信息速度,可以使用asyncio库、aiohttp库,设置并执行协程,从而实现并行爬取数据(最好设置最大并发量,防止对服务器造成太大压力)。

有时获取的网页源数据和在浏览器中所看到的不同,这时需要注意网站是不是使用了CSS偏移等反爬虫手段,需要在后期处理数据时添加一些步骤,来获取正确的数据。

相关推荐

  1. Python爬虫基础知识

    2024-05-04 19:08:01       19 阅读
  2. python爬虫基础知识

    2024-05-04 19:08:01       15 阅读
  3. python爬虫基础知识整理(2)

    2024-05-04 19:08:01       11 阅读
  4. Python学习之路-初识爬虫:基础知识

    2024-05-04 19:08:01       26 阅读
  5. Python爬虫知识图谱

    2024-05-04 19:08:01       25 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-04 19:08:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-04 19:08:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-04 19:08:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-04 19:08:01       18 阅读

热门阅读

  1. mysql binlog入门

    2024-05-04 19:08:01       13 阅读
  2. 深入学习Linux内核 - 进程地址空间

    2024-05-04 19:08:01       12 阅读
  3. C语言总结四:函数(压缩版)

    2024-05-04 19:08:01       11 阅读
  4. 简历总结:打造HR无法拒绝的简历

    2024-05-04 19:08:01       9 阅读
  5. 【需求工程概述】

    2024-05-04 19:08:01       10 阅读
  6. springcloud(智慧养老平台)

    2024-05-04 19:08:01       10 阅读
  7. codeforces round 879 div2 (a,b,c)

    2024-05-04 19:08:01       11 阅读