python学习之爬虫初体验
作业来源: "https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2851" **
1.简述爬虫原理
通用爬虫
即(搜索引擎),通过各站点主动提交域名等信息,或与DNS服务商合作,爬取大部分站点信息
聚焦爬虫
通过模拟用户(即客户端浏览器)访问服务器的行为,从而达到欺骗服务器,获取数据。
2.理解(聚焦)爬虫开发过程
发起请求
向目标服务器发送一个伪造的请求报文
获取响应
得到服务器响应的数据
解析内容
将得到的数据按一定方式解析
保存数据
将解析后的数据收录入文本文件或数据库
浏览器工作原理:
向服务端发送请求报文,收到响应报文后解析其中数据,缓存部分数据。
抓取网站
使用第三方库requests
url = "http://news.gzcc.cn/html/xiaoyuanxinwen";
def use_requests(url):
'''
使用到了第三方库requests获取响应
'''
response = requests.get(url);
response.encoding = "utf-8";
return response;运行结果
使用python自带库 urllib
def use_urllib(url):
'''
使用到了自带urllib获取响应
'''
response = request.urlopen(url);
return response;
一个简单的html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>这是一个简单的网页</title>
<!--简单的样式定义-->
<style>
.class1 {
background: green;
}
.ckass2 {
background: yellow;
}
</style>
</head>
<body>
<div class="class1">
<strong id="strong">这是一个粗体标签</strong><br/>
<b id="b">这依旧是一个粗体标签</b><br/>
<big id="big">这貌似也是一个粗体标签</big><br/>
</div>
<div class="ckass2">
<del id="del">这是一个删除线</del><br/>
<s id="s">这也是一个删除线</s><br/>
<strike id="strike">这同样是一个删除线</strike><br/>
</div>
</body>
</html>
使用BeautifulSoup解析网页
from bs4 import BeautifulSoup
with open(r'simple.html','r',encoding='utf-8') as f:
text = f.read()
dom_tree = BeautifulSoup(text, 'html.parser');
from_label = dom_tree.select('strong')[0].text;
from_class = dom_tree.select('.class1')[0].text;
from_id = dom_tree.select('#strong')[0].text;
print(from_label, from_class, from_id);
提取新闻
dom_tree = BeautifulSoup(use_requests("http://news.gzcc.cn/html/2019/xiaoyuanxinwen_0320/11029.html").text,
'html.parser');
title_from_class = dom_tree.select(".show-title")[0].text;
print(title_from_class);
infos_from_class = dom_tree.select(".show-info")[0].text;
list = infos_from_class.split()[0:-1];
for i in list:
print(i);
python学习之爬虫初体验的更多相关文章
- appium+夜神模拟器+python安卓app爬虫初体验
环境搭建:Windows 7 64bit jdk包:jdk-8u171-windows-x64.exe(http://www.oracle.com/technetwork/java/javase/do ...
- Node.js 网页瘸腿爬虫初体验
延续上一篇,想把自己博客的文档标题利用Node.js的request全提取出来,于是有了下面的初哥爬虫,水平有限,这只爬虫目前还有点瘸腿,请看官你指正了. // 内置http模块,提供了http服务器 ...
- 第三次随笔--安装虚拟机及学习linux系统初体验
第三次随笔--安装虚拟机及学习linux系统初体验 ·学习基于VirtualBox虚拟机安装Ubuntu图文教程在自己笔记本上安装Linux操作系统 首先按照老师的提示步骤进行VirtualBox虚拟 ...
- Python学习网络爬虫--转
原文地址:https://github.com/lining0806/PythonSpiderNotes Python学习网络爬虫主要分3个大的版块:抓取,分析,存储 另外,比较常用的爬虫框架Scra ...
- 【Go 入门学习】第一篇关于 Go 的博客--Go 爬虫初体验
一.写在前面 其实早就该写这一篇博客了,为什么一直没有写呢?还不是因为忙不过来(实际上只是因为太懒了).不过好了,现在终于要开始写这一篇博客了.在看这篇博客之前,可能需要你对 Go 这门语言有些基本的 ...
- 【Python3爬虫】学习分布式爬虫第一步--Redis分布式爬虫初体验
一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对I ...
- 【Python3爬虫】爬取美女图新姿势--Redis分布式爬虫初体验
一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对I ...
- 算法学习:并行化初体验_JAVA实现并行化归并算法
这个系列包括算法导论学习过程的记录. 最初学习归并算法,对不会使其具体跑在不同的核上报有深深地怨念,刚好算倒重温了这个算法,闲来无事,利用java的thread来体验一下并行归并算法.理论上开的thr ...
- Spring Boot 学习笔记1——初体验之3分钟启动你的Web应用[z]
前言 早在去年就简单的使用了一下Spring Boot,当时就被其便捷的功能所震惊.但是那是也没有深入的研究,随着其在业界被应用的越来越广泛,因此决定好好地深入学习一下,将自己的学习心得在此记录,本文 ...
随机推荐
- Spark on Yarn with HA
Spark 可以放到yarn上面去跑,这个毫无疑问.当Yarn做了HA的时候,网上会告诉你基本Spark测不需做太多的关注修改,实际不然. 除了像spark.yarn开头的相关配置外,其中一个很重要的 ...
- 关于在IE浏览器中使用控件问题
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head&g ...
- Nginx的upstream反向代理、负载均衡详解
这篇文章的前提是已经配置好了NGINX,而且tomcat已经配置好了,而且能能够访问了. 说反向代理之前,我们先看看正向代理,正向代理也是大家最常接触的到的代理模式. 正向代理最大的特点是客户端非常明 ...
- Head First Python-Python简单处理文件
前面介绍了自定义格式化输出列表函数printList(),下面再介绍下格式化列表项及列表项的排序. 这里有一组列表数据,记录运动员跑步时间的,要求按照时间大小进行排序.这里每项数据记录的时间格式不一样 ...
- Linux对大容量磁盘分区
1.使用fdisk -l命令,查看可分区的磁盘 2.使用parted命令进行分区 parted /dev/sdb 3.创建分区表 mklabel 磁盘类型选择 gpt , 警告选择yes,代表清除磁盘 ...
- [ionic3.x开发记录]ios下页面过渡效果不出现的小坑
如果内容没有被<ion-content></ion-content>或者<ion-header></ion-header>标签包裹,页面过渡的时候是没有 ...
- 学号 20175313 《实验三 敏捷开发与XP实践》实验报告
目录 实验三 敏捷开发与XP实践 一.实验内容 二.实验步骤 四.心得体会 五.码云链接 六.参考资料 实验三 敏捷开发与XP实践 一.实验内容 (1)编码标准 在IDEA中使用工具(Code-> ...
- xcode10对应的xcode command line tool编译的坑
众所周知,xcode10新增的编译系统new build system会不支持一些老项目的编译,一般的做法是在Xcode编译配置Xcode->File->Project Settings/ ...
- .Net新利器Rider的破解安装与使用
准备 介绍 Rider 是 JetBrains 提供的一款用于 .Net 开发的 IDE,相对于 VS,它显得更加轻量(才 500m 左右),并且不管是提示功能还是流畅度都不逊色于 VS 且某方面可能 ...
- Log print(Android)
Log.v("MyTag", "This is Verbose."); Log.d("MyTag", "This i ...