1.数据抓取
数据集的获取是我们进行数据分析的第一步。现在获取数据的主要途径一般为:现成数据;自己写爬虫去爬取数据;使用现有的爬虫工具爬取所需内容,保存到数据库,或以文件的形式保存到本地。
博主用的是用自己编写的爬虫代码获得数据。
爬虫的设计思路
1.首先确定需要爬取网页URL地址
2.通过HTTP/HTTPS协议来获取相应的HTML页面
3.提取HTML页面里有用的数据
a.如果是需要的数据就保存起来
b.如果是页面里的其他URL,那就继续执行第二步。
爬虫基本流程
发起请求
通过HTTP库向目标站点发起请求,就是发送一个Request,请求可以包含额外的header等信息,等待服务器的响应
获取响应内容
如果服务器正常响应,会得到一个Reponse,Reponse的内容便是所要获取的页面内容,类型可能有HTML,json字符串,二进制数据(如图片视频)等类型。
解析内容
得到的内容可能是HTML,可以用正则表达式,网页解析库进行解析,可能是json,可以直接转为JSON解析对象解析,可能是二进制数据,可以做保存或者进一步处理。
保存数据
保存的形式多种多样,可以保存成文本,也可以保存到数据库,或者保存特定格式文件
反爬虫机制与对策
1 通过分析用户请求的Headers信息进行反爬虫。网站中应用的最多
2通过验证用户行为进行反爬虫,不如通过判断同一个ip在短时间内是否频繁访问对应网站等进行分析。
3通过动态页面增加爬取的难度,达到反爬虫目的。
对策
1 在爬虫中构造这些用户请求的headers信息,以此将爬虫伪装成浏览器
2 使用代理服务器并经常切换代理服务器方式,一般就能够攻克限制。
3.利用一些软件,比如selenium+phantomJS就可以攻克
反爬虫的手段 :user-agent、代理、验证码、动态数据加载、加密数据
数据的选择与处理
1 网页文本 如HTML文档 json格式文本
2.图片 获取到的是二进制文件保存为图片格式
3.视频 获取的二进制文件保存为视频格式即可
4.其他 只要能请求到的,都能获取
解析方式
1 直接处理
2 json解析
3 正则表达式
4 BeautifulSoup
5 PyQuery
6 XPath
2.数据清洗
数据得到手,我们就需要对我们爬取的数据进行清洗工作,为之后的数据分析做铺垫,如果清洗的不到位势必会对之后的数据分析造成影响。
下文将从数据格式统一、空值处理。
格式统一
去掉数据的空格中
在用爬虫进行数据爬取时用strip()对爬取的字符串进行处理
将中文数据转换为阿拉伯数字
例如1.7万变成17000,代码如下
def get_int(s):
if s[-1]=="万":
s=s[0:-1]
s=int(float(s)*10000)
else:
s=int(s)
return s
远行结果如下
if __name__ == '__main__':
s="1.2万"
price = get_int(s)
print(price)#12000
空值处理
用爬虫对数据爬取的时候,若爬取的值不存在会报错,用异常处理语句try{}except:pass(try为爬取视频信息的代码),跳过不存在的视频信息数据。
try:
html=requests.get(Link).text
doc=BeautifulSoup(html);
List=doc.find('div',{
'class':'ops'})