首页 > 编程语言 >Python爬虫知识点之模块作用

Python爬虫知识点之模块作用

时间:2023-01-04 10:01:23浏览次数:48  
标签:baidu 知识点 encoding Python 爬虫 headers 模块 requests com

上一篇文中我们用到了Python的几个模块做了百度新闻的爬取,这些模块他们在爬虫中的作用如下:

1、requests模块

它用来做http网络请求,下载URL内容,相比Python自带的urllib.request,requests更加易用。GET,POST信手拈来:

import requests
res = requests.get(url, timeout=5, headers=my_headers)
res2 = requests.post(url, data=post_data, timeout=5, headers=my_headers)

get()和post()函数有很多参数可选,上面用到了设置timeout,自定义headers,更多参数可参考requests 文档。

requests无论get()还是post()都会返回一个Response对象,下载到的内容就通过这个对象获取:

res.content 是得到的二进制内容,其类型是bytes;

res.text 是二进制内容content decode后的str内容;

它先从response headers里面找到encoding,没找到就通过chardet自动判断得到encoding,并赋值给res.encoding,最后把二进制的content解密为str类型。

经验之谈: res.text判断中文编码时有时候会出错,还是自己通过cchardet(用C语言实现的chardet)获取更准确。这里,我们列举一个例子:

In [1]: import requests
In [2]: r = requests.get('http://epaper.sxrb.com/')
In [3]: r.encoding
Out[3]: 'ISO-8859-1'
In [4]: import chardet
In [5]: chardet.detect(r.content)
Out[5]: {'confidence': 0.99, 'encoding': 'utf-8', 'language': ''}

上面是用ipython交互式解释器(强烈推荐ipython,比Python自己的解释器好太多)演示了一下。打开的网址是山西日报数字报,手动查看网页源码其编码是utf8,用chardet判断得到的也是utf8。而requests自己判断的encoding是ISO-8859-1,那么它返回的text的中文也就会是乱码。

requests还有个好用的就是Session,它部分类似浏览器,保存了cookies,在后面需要登录和与cookies相关的爬虫都可以用它的session来实现。

2、re模块

正则表达式主要是用来提取html中的相关内容,比如本例中的链接提取。更复杂的html内容提取,推荐使用lxml来实现。

3、tldextract模块

这是个第三方模块,需要pip install tldextract进行安装。它的意思就是Top Level Domain extract,即顶级域名提取。前面我们讲过URL的结构,news.baidu.com 里面的news.baidu.com叫做host,它是注册域名baidu.com的子域名,而com就是顶级域名TLD。它的结果是这样的:

In [6]: import tldextract
In [7]: tldextract.extract('http://news.baidu.com/')
Out[7]: ExtractResult(subdomain='news', domain='baidu', suffix='com')

返回结构包含三部分:subdomain, domain, suffix

4、time模块

时间,是我们在程序中经常用到的概念,比如,在循环中停顿一段时间,获取当前的时间戳等。而time模块就是提供时间相关功能的模块。同时还有另外一个模块datetime也是时间相关的,可以根据情况适当选择来用。

记住这几个模块,在今后的写爬虫生涯中将会受益匪浅。

标签:baidu,知识点,encoding,Python,爬虫,headers,模块,requests,com
From: https://blog.51cto.com/u_13488918/5987019

相关文章

  • python读取文件,如果未找到,可以抛错处理
    defmain():f=open('致橡树.txt','r',encoding='utf-8')print(f.read())f.close()deftest():f=Nonetry:f=open("致橡树.svb",'r......
  • Python学习day01
    一、python介绍 ①发展史被解救的姜戈2.450万行Python2.6-October1,2008Python2.6.1-October1,2008Python2.6.6-October1,2008Python3.0-December3......
  • PostgreSQL citus python环境搭建
    PostgreSQLcituspython环境搭建 精选 原创Janeh10182022-01-0809:19:09博主文章分类:PostgreSQL©著作权文章标签sqlpostgresql数据库文章分类其它数据库阅读数27......
  • Python 数据类型详细篇:字符串
    Python基本数据类型中的字符串类型,字符串类型在实际的开发中是一个经常会用到的数据类型,比较重要。下面我们一起来看一下:1.简介字符串类型的数据表示一段文本,使用单引号......
  • Python转义字符理解
    #Author:符攀飞#Blog:feifeige.top#Date:2023/1/322:09#File:day02.py#转义字符print('hello\nworld')#\n换行print('hello\tworld')#t占四个,hello多......
  • 用Python批量绘制二维矩阵
    importnumpyasnpfrommatplotlibimportpyplotaspltimportmatplotlibasmplimportglobdefcreate_4_colorMap():#colors=['blue','cyan','green','p......
  • 创建python虚拟环境
    安装pipinstallvirtualenvcd到指定目录virtualenv目录名--python==python3.7 ---如何激活python进入scripts目录,执行该文件   ---给虚拟环境安装dj......
  • 转载自ChatGPT:Python关键字 asynico
    同步和异步同步和异步是指程序的执行方式。在同步执行中,程序会按顺序一个接一个地执行任务,直到当前任务完成。而在异步执行中,程序会在等待当前任务完成的同时,执行其他任务......
  • Python常见设置
    pip的相关设置设置镜像为pip设置国内的镜像源可以提高Python库下载的速度,这里推荐使用清华大学的镜像站,使用如下命令配置:python-mpipinstall--upgradepippipconf......
  • Python获取错误信息
    exceptExceptionase:    printe  eg:  ......