作业来源: "https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2851" **


1.简述爬虫原理

通用爬虫

即(搜索引擎),通过各站点主动提交域名等信息,或与DNS服务商合作,爬取大部分站点信息

聚焦爬虫

通过模拟用户(即客户端浏览器)访问服务器的行为,从而达到欺骗服务器,获取数据。

2.理解(聚焦)爬虫开发过程

  1. 发起请求

    向目标服务器发送一个伪造的请求报文

  2. 获取响应

    得到服务器响应的数据

  3. 解析内容

    将得到的数据按一定方式解析

  4. 保存数据

    将解析后的数据收录入文本文件或数据库

    浏览器工作原理:

    向服务端发送请求报文,收到响应报文后解析其中数据,缓存部分数据。

    抓取网站

    使用第三方库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学习之爬虫初体验的更多相关文章

  1. appium+夜神模拟器+python安卓app爬虫初体验

    环境搭建:Windows 7 64bit jdk包:jdk-8u171-windows-x64.exe(http://www.oracle.com/technetwork/java/javase/do ...

  2. Node.js 网页瘸腿爬虫初体验

    延续上一篇,想把自己博客的文档标题利用Node.js的request全提取出来,于是有了下面的初哥爬虫,水平有限,这只爬虫目前还有点瘸腿,请看官你指正了. // 内置http模块,提供了http服务器 ...

  3. 第三次随笔--安装虚拟机及学习linux系统初体验

    第三次随笔--安装虚拟机及学习linux系统初体验 ·学习基于VirtualBox虚拟机安装Ubuntu图文教程在自己笔记本上安装Linux操作系统 首先按照老师的提示步骤进行VirtualBox虚拟 ...

  4. Python学习网络爬虫--转

    原文地址:https://github.com/lining0806/PythonSpiderNotes Python学习网络爬虫主要分3个大的版块:抓取,分析,存储 另外,比较常用的爬虫框架Scra ...

  5. 【Go 入门学习】第一篇关于 Go 的博客--Go 爬虫初体验

    一.写在前面 其实早就该写这一篇博客了,为什么一直没有写呢?还不是因为忙不过来(实际上只是因为太懒了).不过好了,现在终于要开始写这一篇博客了.在看这篇博客之前,可能需要你对 Go 这门语言有些基本的 ...

  6. 【Python3爬虫】学习分布式爬虫第一步--Redis分布式爬虫初体验

    一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对I ...

  7. 【Python3爬虫】爬取美女图新姿势--Redis分布式爬虫初体验

    一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对I ...

  8. 算法学习:并行化初体验_JAVA实现并行化归并算法

    这个系列包括算法导论学习过程的记录. 最初学习归并算法,对不会使其具体跑在不同的核上报有深深地怨念,刚好算倒重温了这个算法,闲来无事,利用java的thread来体验一下并行归并算法.理论上开的thr ...

  9. Spring Boot 学习笔记1——初体验之3分钟启动你的Web应用[z]

    前言 早在去年就简单的使用了一下Spring Boot,当时就被其便捷的功能所震惊.但是那是也没有深入的研究,随着其在业界被应用的越来越广泛,因此决定好好地深入学习一下,将自己的学习心得在此记录,本文 ...

随机推荐

  1. CSS3_文本样式

    1. 文字阴影 text-shadow 使用: text-shadow:    水平方向偏移量    垂直方向偏移量    模糊程度    颜色; #box { text-shadow: 10px 1 ...

  2. centos7下部署nginx与php

    背景介绍 相信读者在看这篇文章之前已经fastcgi,php-fpm有所了解.大概来讲php语言需要fastcgi程序,即php解释器解释,而php解释器需要php-fpm管理器进行调度. 以下对CG ...

  3. tomcat端口冲突,关闭端口方法

    CMD打开控制台 输入:netstat -ano | findstr 8080 //最后一行的进程号PID 输入:taskkill /F /PID 所要关闭的PID号 如图所示 之后会补充

  4. js图片预加载与延迟加载

    图片预加载的机制原理:就是提前加载出图片来,给前端的服务器有一定的压力. 图片延迟加载的原理:为了缓解前端服务器的压力,延缓加载图片,符合条件的时候再加载图片,当然不符合的条件就不加载图片.​ 预加载 ...

  5. yii2 gridview checkbox

    给checkbox(在GridView里的)添加一个value 控制器:$dataProvidermStu->key = "student_no"; view:[ 'clas ...

  6. 【蓝桥杯真题】地宫取宝(搜索->记忆化搜索详解)

    链接 [蓝桥杯][2014年第五届真题]地宫取宝 题目描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被 ...

  7. jQuery实现select级联

    使用Html5的数据属性(data-*)Map级联关系,代码如下: <!DOCTYPE html> <html> <head> <title>Selec ...

  8. Python全局变量和局部变量相关知识点

    知识点一: #在函数外面定义的变量叫全局变量 num = 100 def AAA(): ''' 如果在函数中直接修改全局变量,那么会产生异常 如果真的需要修改,可以在函数中进行声明(前面加入globa ...

  9. JAVA 第五周学习总结

    20175303 2018-2019-2 <Java程序设计>第五周学习总结 教材学习内容总结 •使用关键字interface来定义一个接口,定义接口分包含接口声明和接口体. •接口体中包 ...

  10. 栈->栈与递归

    文字简述 1.阶乘函数 2.2阶Fiibonacci数列 3.n阶Hanoi塔问题 代码实现 // // Created by lady on 19-4-3. // #include <stdi ...