爬虫:网易严选
作者:石头炒面
联系方式:903565442@qq.com
声明:任何形式的转载都需要过问本人,否则后果自负。本文技术入门级,所以请不要引起没必要的争论。互相学习就好。
摘要:网易严选是国内知名的电商平台,其商品数量繁多,所以在网站中可以大量的挖掘其数据进行商业分析,本文章采用requests技术对网站进行爬虫分析,并对其后的数据结果进行处理分析。
1.爬虫篇
1.1爬虫包的总述
题主这里对爬虫技术做简单的归纳和综述。python爬虫的依赖包常见的有三种:requests,urllib和selenium。其中urllib为python的内置包,其使用操作可以满足大多的网络爬虫工作,是最原始的爬虫包,其使用方法简单,容易上手。requests是基于urllib整合的爬虫包,其在urllib的基础上继续升华,是目前使用最广泛,应用最简单的爬虫包。selenium的角色比较特殊,网站的服务器对爬虫的识别是网站反爬的必要环节,而爬虫对服务器的伪装是反反扒的关键。但是不管的requests还是urllib都无法完全模拟人类访问服务器的操作,但是selenium做到了,selenium或许是反爬虫的顶端,但是对比另外的两个包,selenium往往要花更长的时间去获取数据,所以我建议能不用就不用。
1.2开始爬虫
首先要建立自己的工作目录:网易严选爬虫(文档)。
建立第一个py文件:获取网页的html代码。
这里插一句,不管是任何形式的网络爬虫,是要从网页中获取信息,那么网页中的信息是如何呈现的呢?很简单,网页的信息是Html5代码呈现的,我们都知道互联网前端的三个常用工具:HTML,CSS和JavaScript,这三者共同呈现了我们能够获取信息的网页。而其中的HTML就是呈现信息的最基本载体,这并不是说要我们精通前端的技术,但是一定要懂得其中的道理,才能从网站中获取有用的信息。
接下来我们上代码:
import requests as rq
#调用requests包
url='http://you.163.com/item/list?
categoryId=1005000&_stat_area=nav_2&_stat_referer=activityhd'
num = 0
#设定要爬取的网站
def get_html(url,num):
'指南:输入url,在目录下生成html.txt接受获取的html代码,并返回rq对象。'
headers ={
'Referer': 'http://you.163.com/item/list?categoryId=1010000&_stat_area=nav_3&_stat_referer=activityhd',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763'}
#设置headers
a = rq.get(url,headers = headers)
html_txt = open('%d.html'%num,'w',encoding='utf-8')
#这里声明编码方式以避免写入的错误
html_txt.write(a.text)
html_txt.close()
return a
运行这段代码,就可以获得网易严
选中网页的url。运行如上代码可以在txt中看到爬取的html代码。
那么问题来了。为什么在txt中观看呢?因为这种非常长的片段在shell中显示会造成卡顿,IDLE并不是为了阅读大量的文字专门设计的程序。这里可以用notepad++阅读html代码,如果完全没有基础,可以学习小甲鱼的课程进行简单学习。
那上面的部分就是如何进行一次简单的爬虫,这里面涉及到的requests包的应用,包括web技术的理解都是爬虫的基础,爬虫实际上考验的不只是爬虫包的应用,而更多的是web技术的基础。如果成功的运行代码,可以继续学习。
1.3业务的介绍
在这里要对业务方面进行说明:
我们想获取所有商品的名称,价格等,那么首先要对网站进行观察,可以看到其所有商品都罗列在网站上,网站的结构和商品的分类相对应,分为居家生活,服饰箱包,美食酒水,个护清洁,母婴亲子,运动旅行,数码家电[图一]。点击每个按钮可以跳转到对应的url,配合上一节学到的知识,如果我们获取每一个商品页面的html并对其进行分析,就可以获取到所有商品的信息。
1.4获取各个种类网页的源代码并进行分析获取数据
我们可以从web中获取每一类商品的url,但是这对于比较少的数据来讲是比较多余的,这里主张不要为了技术而技术,那么我们可以手动点击所有的按钮,并记录url,存入一个py的list中。
list_url = [
'http://you.163.com/item/list?categoryId=1005000&_stat_area=nav_2&_stat_referer=activityhd',
'http://you.163.com/item/list?categoryId=1010000&_stat_area=nav_3',
'http://you.163.com/item/list?categoryId=1005002&_stat_area=nav_4',
'http://you.163.com/item/list?categoryId=1013001&_stat_area=nav_5',
'http://you.163.com/item/list?categoryId=1013001&_stat_area=nav_6',
'http://you.163.com/item/list?categoryId=1013001&_stat_area=nav_7',
'http://you.163.com/item/list?categoryId=1013001&_stat_area=nav_8',
'http://you.163.com/item/list?categoryId=1013001&_stat_area=nav_9',
]
**这么做并没有很丢人,小于十的机械操作没必要为之设计一个脚本。**
我们为之写入一个简单的for in语句对每一个网页进行html的获取,并存储到工作目录中以便阅读。
num = 0
#num用于标记列表中的url,并作为获取的html代码文件的命名
for url in list_url:
get_html(url,num)
来源:CSDN
作者:捶捶小学
链接:https://blog.csdn.net/weixin_44261015/article/details/103962007