python 爬虫与数据可视化--数据提取与存储
一、爬虫的定义、爬虫的分类(通用爬虫、聚焦爬虫)、爬虫应用场景、爬虫工作原理(最后会发一个完整爬虫代码)
二、http、https的介绍、url的形式、请求方法、响应状态码
url的形式:
请求头:
常见响应状态码(可利用响应状态码判断响应状态assert response.status_code == 200):
三、数据请求,获取响应(requests模块,详细使用方法api文档)
中文文档api:http://docs.python-requests.org/zh_CN/latest/index.html
发送请求格式:requests.get(url,headers=headers,timeout=5) #get方式
requests.post("http://www.baidu.com/", data = data,headers=headers) #post大文本传输,不限制长度,post更安全,data参数为字典
session = requests.session() session.get(url,headers)
cookies与session应用:cookies保存在浏览器端、session保存在服务端,利用session类保持会话连接请求页面,但缺点不能请求多、快容易被识别
四、数据提取与分类(json模块、lxml的etree模块)
通常响应数据分为结构化数据与非结构化数据,结构化数据为json格式等,非结构化数据为html页面等
结构化数据多为json格式,利用浏览器抓包工具,找到对应响应的Json字符串,在转化为python数据类型(字典)
非结构化数据多为html页面直接抓取,利用xpath节点选择,抓取对应数据(需掌握xpath元素定位、配合工具Chrome插件 XPath Helper)
五、数据的保存
利用mongodb数据库来存爬取的数据(安装与部署请见mongodb的安装与配置)或直接write保存到本地
五、糗事百科html数据提取与保存代码
import requests
from lxml import etree
from pymongo import MongoClient client = MongoClient("127.0.0.1",27017)
collection = client["duanzi"]["qiubai"] def get_url_list(): # 1.url的规律,构造一堆url出来
url_list = []
url_temp = "https://www.qiushibaike.com/8hr/page/{}/"
for i in range(1, 14):
url = url_temp.format(i)
url_list.append(url)
return url_list def parse_url(url):
headers = {
"User-Agnet": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"}
r = requests.get(url, headers=headers, timeout=5)
hmtl_str = r.content.decode()
html = etree.HTML(hmtl_str) # 使用etree处理,得到elemnet对象,能够使用xpath方法
return html def get_content_list(html): # 3.提取数据
div_list = html.xpath("//div[@id='content-left']/div")
content_list = []
for div in div_list:
item = {}
item["author_img"] = div.xpath("./div[@class='author clearfix']//img/@src")
if len(item["author_img"]) > 0: # 获取用户的图像图片
item["author_img"] = "https:" + item["author_img"][0]
else:
item["author_img"] = None
item["author_name"] = div.xpath("./div[@class='author clearfix']//h2/text()")
if len(item["author_name"]) > 0: # 获取用户名字
item["author_name"] = item["author_name"][0].strip()
else:
item["author_name"] = None
# 获取性别
item["author_gender"] = div.xpath("./div[@class='author clearfix']/div/@class")
if len(item["author_gender"]) > 0:
item["author_gender"] = item["author_gender"][0].split(" ")[-1].replace("Icon", "")
else:
item["author_gender"] = None
# 获取年龄
item["author_age"] = div.xpath("./div[@class='author clearfix']/div/text()")
if len(item["author_age"]) > 0:
item["author_age"] = item["author_age"][0]
else:
item["author_age"] = None
#获取段子的正文
item["content"] = div.xpath(".//div[@class='content']/span/text()")
item["content"] = [i.strip() for i in item["content"]]
#提取点赞的的数量
item["stats_vote"] = div.xpath(".//span[@class='stats-vote']/i/text()")
if len(item["stats_vote"])>0:
item["stats_vote"] = item["stats_vote"][0]
else:
item["stats_vote"] = None
#提取评论数量
item["stats_comments"] = div.xpath(".//span[@class='stats-comments']//i/text()")
if len(item["stats_comments"])>0:
item["stats_comments"] = item["stats_comments"][0]
else:
item["stats_comments"] = None #提取正文中的文中的图片
item["content_img"] = div.xpath("./div[@class='thumb']//img/@src")
if len(item["content_img"])>0:
item["content_img"] = "https:"+item["content_img"][0]
else:
item["content_img"] = None content_list.append(item)
return content_list def save_content_list(content_list): #保存
for content in content_list:
print(content)
collection.insert(content)
print("*"*100) def run():
# 1.url的规律,构造一堆url出来
url_list = get_url_list()
# 2.遍历url_list,发送请求,获取响应
for url in url_list:
html = parse_url(url)
# 3.提取数据
content_list = get_content_list(html)
# 4.保存
save_content_list(content_list) if __name__ == '__main__':
run()
python 爬虫与数据可视化--数据提取与存储的更多相关文章
- java调用Linux执行Python爬虫,并将数据存储到elasticsearch--(环境脚本搭建)
java调用Linux执行Python爬虫,并将数据存储到elasticsearch中 一.以下博客代码使用的开发工具及环境如下: 1.idea: 2.jdk:1.8 3.elasticsearch: ...
- Python爬虫丨大众点评数据爬虫教程(1)
大众点评数据获取 --- 基础版本 大众点评是一款非常受普罗大众喜爱的一个第三方的美食相关的点评网站. 因此,该网站的数据也就非常有价值.优惠,评价数量,好评度等数据也就非常受数据公司的欢迎. 今天就 ...
- python爬虫——汽车之家数据
相信很多买车的朋友,首先会在网上查资料,对比车型价格等,首选就是"汽车之家",于是,今天我就给大家扒一扒汽车之家的数据: 一.汽车价格: 首先获取的数据是各款汽车名称.价格范围以及 ...
- Python爬虫的三种数据解析方式
数据解析方式 - 正则 - xpath - bs4 数据解析的原理: 标签的定位 提取标签中存储的文本数据或者标签属性中存储的数据 正则 # 正则表达式 单字符: . : 除换行以外所有字符 [] : ...
- 【visio】数据可视化 - 数据展示
本章讲解如何将形状数据展示成数据图像,也就是将添加的属性,展示在图形上 1.数据图形控制面板 选中图形>右键>数据>编辑数据图形 2.新建数据图形 数据字段:也就是图形的属性 显示为 ...
- Python爬虫10-页面解析数据提取思路方法与简单正则应用
GitHub代码练习地址:正则1:https://github.com/Neo-ML/PythonPractice/blob/master/SpiderPrac15_RE1.py 正则2:match. ...
- 使用python爬虫爬取股票数据
前言: 编写一个爬虫脚本,用于爬取东方财富网的上海股票代码,并通过爬取百度股票的单个股票数据,将所有上海股票数据爬取下来并保存到本地文件中 系统环境: 64位win10系统,64位python3.6, ...
- python爬虫爬取天气数据并图形化显示
前言 使用python进行网页数据的爬取现在已经很常见了,而对天气数据的爬取更是入门级的新手操作,很多人学习爬虫都从天气开始,本文便是介绍了从中国天气网爬取天气数据,能够实现输入想要查询的城市,返回该 ...
- Python爬虫之HDU提交数据
前一篇http://www.cnblogs.com/liyinggang/p/6094338.html 使用了爬虫爬取hdu 的代码,今天实现了将数据向hdu 提交的功能,接下来就是需要将两个功能合并 ...
随机推荐
- 帝国cms 不能正常显示最新文章
后台能正常刷新,但前台就是不能正常显示, 把网站从c盘换到d盘,好了,原来是权限的问题
- luoguP4841 城市规划
题意: 求n个点的无相连通图的个数.有编号 思路一: 黏博客 至于为什么除以k!:(没有博客中说的那么简单) 实际上, 对于一个n的用k个自然数的拆分,每一个拆分的贡献是: $\frac{n!*\Pi ...
- create-react-app中添加less支持
前言 使用 create-react-app 脚手架创建项目后,默认是不支持 less 的.所以我们需要手动添加. 第一步 暴露webpack配置文件 使用 create-react-app 创建的项 ...
- django - 总结 - 中间件
中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好会影响到性能. MID ...
- python中的GIL详解
GIL是什么 首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念.就好比C++是一套语言(语法)标准,但是可以用不同的编译器来编译成可 ...
- Aurora的安装和中文配置
转载自: http://blog.csdn.net/wdkirchhoff/article/details/72903885 要用 Aurora 很烦躁. 时不时出问题... 看看以下转载的吧. Au ...
- Pandas时间处理的一些小方法
一.以下有两种方式可以创建一个Timestamp对象: 1. Timestamp()的构造方法 import pandas as pd from datetime import datetime as ...
- 你对安卓触控一体机了解多少?视野还停留在windows一体机上?
android一体机可以根据用户的不同需求拓展各种不同的硬件外接设备和各种应用软件,环境适应能力又强,所以在诸多领域的应用都非常受欢迎,并且还在不断地开拓新市场.安卓系统触摸一体机占据绝对性优势. 1 ...
- CSS盒模型(Box Model)
阅读目录 1. 什么是CSS盒模型 2. IE盒模型和W3C盒模型 3. CSS3属性box-sizing 4. 关于盒模型的使用 在最初接触CSS的时候,对于CSS盒模型的不了解,撞了很多次的南墙呀 ...
- linux服务器安装Mysql后,只能看到information_schema/test这两个库,无法修改密码
参考链接:https://www.cnblogs.com/ThinkVenus/p/7670722.html 问题背景:登录mysql失败,密码错误,由此想到需要更改密码 然而,进入数据库后,只能看到 ...