最终效果:
文章目录
前言
作为初学者,深知实现这样的功能简直是入门中的入门,但是为了掌握python爬虫,不妨就从最简单的测试开始入手。该篇文章只实现了爬取天猫搜索结果的第1页信息,因为从第2页开始就需要进行登陆验证,还有复杂的验证过程,因目前暂未深入,故简化了代码。若博文中有任何问题,欢迎各路大侠指证!请大侠们不吝赐教!
1.实现步骤
测试工具:Jupyter Notebook(anaconda3)
获取网页url -> 用正则表达式提取有用信息 -> 保存信息 -> 将信息转换成DataFrame对象 -> 信息处理(例:按价格升序)
2. 获取网页url
该步骤基于requests模块中的requests.get(url)
方法,其中requests是python爬虫里最基础的模块,它可以提供一系列对网页操作的方法。
2.1 requests模块
- requests模块的七个主要方法,如下表所示:
方法 | 说明 |
---|---|
.request() | 构造一个请求,支撑以下各方法的基础方法 |
.get() | 获取HTML网页的主要方法,对应于HTTP的GET |
.head() | 获取HTML网页头信息的方法,对应于HTTP的HEAD |
.post() | 向HTML网页提交POST请求的方法,对应于HTTP的POST |
.put() | 向HTML网页提交PUT请求的方法,对应于HTTP的PUT |
.patch() | 向HTML网页提交局部修改请求,对应于HTTP的PATCH |
.delete() | 向HTML网页提交删除请求,对应于HTTP的DELETE |
- response对象的属性(简化成r),如下表所示
属性 | 说明 |
---|---|
r.status_code | HTTP请求的返回状态,200表示连接成功,404表示失败 |
r.text | HTTP响应内容的字符串形式,即url对应的页面内容 |
r.encoding | 从HTTP header中猜测的响应内容编码方式 |
r.apparent_encoding | 从内容中分析出的响应内容编码方式(备选编码方式) |
r.content | HTTP响应内容的二进制形式 |
2.2 分析url
- URL是统一资源定位符,是互联网上标准资源的地址。而互联网上的每个文件都有唯一的一个的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
基于requests模块,接下来需要去天猫网站寻找有用的网址信息。
天猫的官网:https://www.tmall.com/
当查询一个商品,比如:[ 电脑 ] 后,网页跳转到:https://list.tmall.com/search_product.htm?q=%B5%E7%C4%D4
,后面多余的信息可以省略,因为只搜索这部分网址也有效果,在网址中https://list.tmall.com/search_product.htm?
是固定格式(直观地感觉),而后面的q=%B5%E7%C4%D4
则是搜索的商品名称,为什么会是%B5这样的形式,因为这个网址的编码方式不会直接显示中文。
接下来查看页面源代码
其中有一句是meta charset="gbk"
,说明网站是采用GBK的编码方式,这样一来在解码获取页面信息时,就得用GBK的编码方式。
最终确定的url
url = 'https://list.tmall.com/search_product.htm?q='
q = input('请输入要搜索的商品名称: ')
r = rq.get(url + q)
3.获取静态页面
基于requests模块
的r.content.decode(‘编码方式’)方法,它可以提取网页的源代码,在这里则为html =