什么叫做爬虫
百度百科的解释是,按照一定的规则,自动地抓取万维网信息的程序或者脚本。
那么,爬虫工作的目的就是爬取网页,也就是html。
那么我们学习爬虫肯定就是要先学习,如何爬取整个网页的html页面。
那么今天就定个目标,能够爬取一个网站的html代码。
requests模块
由于我们第一天安装了Anaconda,conda就为我们集成好了这个模块,控制台输入conda list requests就可以查看。
如果没有安装Anaconda 就需要在控制台输入 pip install命令来下载。
下面用requests爬取一个网页的页面
import requests #引入requests模块
url ='http://www.sand-sculpture.com/index.html' #想要爬取的网页链接
resopnse = requests.get(url) #通过requests get请求网页获取响应的页面
resopnse.encoding="gbk" #设置编码格式
html = resopnse.text #获取页面html
print(html)
resopnse.encoding="",这个引号里面填的是什么编码格式呢,就是我们鼠标右击网页,查看页面源代码,或者使用开发者工具展开head所看到的 <meta>标签下的 charset属性设置的值。
带参数的get请求
以某小说网站搜索页面为例 https://www.biqugex.com/
点击搜索之后会跳转到下面的页面
他得url 变成了 https://so.biqusoso.com/s.php?ie=gbk&siteid=biqugex.com&s=9157106854577873494&q=%B7%B2%C8%CB%D0%DE%CF%C9%B4%AB
我们不难看到问号?将url分成了两个部分,问好右面的就是参数,&分割参数如参数,=左侧是键,右边是值。我们如果用爬虫爬取这个页面的话就必须对get请求传参。
这边是使用的字符串拼接法,实现的带参请求,实际上get方法本身也是可以带参传值的,参考 快速上手 - Requests 2.18.1 文档
下面会解释一下 from urllib import parse里的内容
涉及urllib.parse的用法
从大模块引入小模块的语句:from ... import ...(以后还会遇到)
为什么要引入parse这个模块呢?
为了把中文的字符串,上图中的query ="凡人修仙传",转换成url编码。
下图q=后面紧跟的一截由字母和百分号构成的串就是url编码
但是从字符串变成url编码有多种形式,有按照utf-8去编码的,还有按照gb2312去编码的。
所以我们要先确定q的编码方式。
我们打开站长之家 http://tool.chinaz.com/tools/urlencode.aspx ,做一个对比
发现网站的q是GB2312编码方式。
利用parse转换编码
from urllib import parse
query = "凡人修仙传"
q = parse.quote_from_bytes(query.encode("gb2312"))
print(q)
只要记住转换编码的方法就行了,不需要怎么高的理解。
想要了解更多的关于urllib.parse,可以访问一下
https://www.jianshu.com/p/e7d87e1ed38cwww.jianshu.com