网页打开方式有很多种,最常见的是get方式和post方式,在浏览器中输入网址的访问属于get方式,但是又有一些页面只能通过某个链接或按钮以后跳过来,不能通过浏览器输入网址访问,这种网页就是用了post方式。
一、get方式
在python中可以使用requests的get()方法获取网页源代码,格式为
import requests
源代码变量 = requests.get(‘网址,注意网址要以http://开头’)
源代码的bytes格式的源代码变量这个变量是无法显示中文的 = 源代码变量.content
源代码的字符串型变量 = 源代码的bytes格式的源代码变量这个变量是无法显示中文的.decode()
当然上面的后面三行可以简化为二行即:
import requests
网页源代码变量 = reques.get(‘网址’).content.decode()
注意最后的decode()的参数可以是utf-8或GBk或GB2312
爬虫举例
这里我们提供一个测试的网页https://exercise.kingname.info/exercise_requests_get.html
这个网页只有这么一句话,下面让我们用requets中的get方法来爬取这句话
代码如下
#导入库
import re
import requests
#爬取网页标题和内容
a = requests.get('https://exercise.kingname.info/exercise_requests_get.html').content.decode()
biaoti = re.search('title>(.*?)</title',a,re.S).group(1)
zhengwen = re.findall('<p>(.*?)</p',a,re.S)
zwpj = '\n'.join(zhengwen)
#输出爬取的内容
print(f'字典格式的标题{biaoti}')
print(f'字符串格式的\n {zwpj}')
代码解释
上面这个代码包括三部分,第一部分是导入库模块,首先要保证电脑里已经安装了这两个库,如果没有安装,请自己搜一下如何安装这两个库,一个叫re一个叫requets
第二部分是核心代码,先看第一行
a = requests.get('https://exercise.kingname.info/exercise_requests_get.html').content.decode() 这个代码用的是获取网页源代码的方法,格式如下 网页源代码变量 = requests.get(‘网址’).content.decode()
第二行,是用的正则表达式来爬取的网页标题,我之前文章有介绍正则表达式的,可以去看一下
biaoti = re.search('title>(.*?)</title',a,re.S).group(1) zhengwen = re.findall('<p>(.*?)</p',a,re.S) zwpj = '\n'.join(zhengwen)
需要说明的是,re的.search是指的爬取第一个获取到的符合正则表达式规则的内容,后面的.group(1)是指的输出获取到的内容,如果不加这个.group会返回很多很多内容,比如获取到的这个字符的长度,之类的东西,所有要加上.group(1)
.join()是把zhengwen爬取出来的两句文字,从集合里拿出来,\n是换行,
如果这时候
print(zhengwen)
print(zwpj)
会输出下面的结果:
第三部分是输出爬取到的内容
这里只说一个f吧,F是格式化字符串,f‘文字正常写,{变量}用中括号括起来’