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 提交的功能,接下来就是需要将两个功能合并 ...
随机推荐
- [FJOI2018]领导集团问题
[FJOI2018]领导集团问题 dp[i][j],i为根子树,最上面的值是j,选择的最大值 观察dp方程 1.整体Dp已经可以做了. 2.考虑优美一些的做法: dp[i]如果对j取后缀最大值,显然是 ...
- c语言计算过程中的过程转换
graph BT float==>double; id1[char, short]==>int; int-->unsigned unsigned-->long long--&g ...
- 如何查看C++ dll位数
使用VS自带工具 dumpbin dumpbin /headers xxx.dll
- nginx缓存设置(expires)
一.expires功能说明 nginx缓存的设置可以提高网站性能,对于网站的图片,尤其是新闻网站,图片一旦发布,改动的可能是非常小的,为了减小对服务器请求的压力,提高用户浏览速度,我们可以通过设置ng ...
- 关于中国菜刀,如何"切菜"
介绍 经典标题党,中国菜刀有大牛已经分析过了->传送门(http://blog.csdn.net/p656456564545/article/details/49671829).博主PHP刚接触 ...
- webpack 代码优化压缩方法
在配置基于webpack的react单页面脚手架时,公共依赖库代码打包至vender.js中,页面逻辑代码打包至app.js中,使用webpack-bundle-analyzer分析发现,两个js中包 ...
- Django之Model
一.字段 常用字段: AutoField:int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntergerField:一个 ...
- day14 带参装饰器、迭代器、生成器
""" 今日内容: 1.带参装饰器及warps 2.迭代器 3.生成器 """ """ # 一.带参装饰器及w ...
- 简单使用Markdown
Markdown是一种纯文本格式的标记语言.通过简单的标记语法,它可以使普通文本内容具有一定的格式. 相比WYSIWYG编辑器 优点: 1.因为是纯文本,所以只要支持Markdown的地方都能获得一样 ...
- Win10上默认VS 2017以管理员身份运行
Win10上的UAC虽然是个好东西,但是对于使用开发工作的技术人员来说有时候也挺麻烦.这里有一个让VS2017无论如何都以管理员身份运行的方法. 1.进入VS2017的安装目录:..\Microsof ...