[Python]网络爬虫总结

本文总结了Python网络爬虫的基本策略,包括处理静态和动态网页。对于静态网页,可使用requests和正则表达式;动态网页则涉及数据包抓取和Selenium模拟浏览器。动态网页中的数据包通常是HTTP请求,特别是GET方法。当常规方法失效时,Selenium提供了解决方案,但它速度较慢。最后,文章提到了爬虫优化和反反爬虫策略,如控制请求速度和更换IP。
摘要由CSDN通过智能技术生成

[Python]网络爬虫总结

本文将对Python网络爬虫进行简要的总结,涵盖了我目前所使用的所有方法。

常见的网页形式主要有两大类:
* 静态网页
* 动态网页

所谓的静态的网页,就是网页编写者会将网页数据都直接写入到html中,对于这样的网页,一般而言是无法进行数据更新的,也就是说你今天打开这个网页获得的信息和你一个月后在这个网页获得信息是一样的,不会有任何的改变。

所谓的动态的网页,就是网页编写者只是将网页写成一个框架,具体的数据会放在服务器的数据库了。就比如说,网页是一个书架,你希望获得金融类的书籍,那你就可以向服务器发出这么一个请求——“我希望获得金融类的书籍”,那么服务器就会返回相应的书籍,书架上就会呈现相应的金融类的书籍。这里的请求实际上就是http请求,也就是网页作为前端与服务器作为后端之间的信息通信。动态网页是目前比较常见的网页形式,因为大数据的存在,网页逐渐成为一种呈现的方式,具体的数据会保存在服务器的数据库中,并且不断地改变着。

对于具体的爬虫来说,对于这两种方式,会采用不同的爬虫策略。

静态网页

对于静态网页,就不多说了,太简单了。只要用requests库直接把html爬下来,然后用正则表达式匹配即可。但是到了目前互联网发展阶段,已经很少有静态网页了。如果你遇到要爬虫静态网页,那你一定是非常幸福了。
例如这样的网页:你的名字 就可以认为是一个静态网页。

# -*- coding: utf-8 -*-
import requests
session = requests.session()
# 设置信息头,用于模拟浏览器的行为
session.headers = {
  'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5)'
                                 'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}

r = session.get('http://www.dy2018.com/i/97747.html')
html = r.content
# 解码中文
print(html.decode('gb2312'))

动态网页

动态网页是比较常见的爬虫目标,这里我给出一些比较常见的爬虫方法,仅供参考。

爬取数据包

一般来说,要爬虫的内容都是在格式上具有一定的重复性,但同时数据量又非常大。如果你曾经做过网页开发,你就会明白网页开发者对于这样的数据,一般都会采取从服务器发数据包到前端,在前端解析数据的方式来实现,于是这就给了爬虫者巨大的便利。因为一旦我找到了数据包的请求方式,我就可以仿照前端发送相同的请求,来获得相应的JSON数据。

这样请求一般可以认为是http请求,http请求主要分为两种形式:
* Get方法:比如说我们在浏览器上输入一个网络地址,就是发起一个Get方法的请求。这种网络地址就是URL。
* Post方法:在爬虫中不常见,故不详细介绍

对于爬虫者来说,只需要知道Get方法是如何传递参数的即可。在前文,我提到网页就是一个书架,如果我希望书架上的书都是金融类的书,那么我就需要向服务器发送一个需要书的请求,并且这个请求中的一个参数就是“金融类”,于是服务器就能明白我想要的书是金融类的书。

具体来看,这么一个例子:

http://www.shgtj.gov.cn/i/tdsc/dklb/?pn=
  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值