zoukankan      html  css  js  c++  java
  • 理解爬虫原理

    理解爬虫原理

    作业要求来自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2851

     

    一、简单说明爬虫原理

    通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据(图片、视频) 爬到本地,进而提取自己需要的数据,存放起来使用。

    二、理解爬虫开发过程

    1.简要说明浏览器工作原理:

    浏览器工作原理的实质就是实现http协议的通讯,具体过程如下:

    HTTP通信的流程,大体分为三个阶段:

    (1)连接:服务器通过一个ServerSocket类对象对8000端口进行监听,监听到之后建立连接,打开一个socket虚拟文件。

    (2)请求:创建与建立socket连接相关的流对象后,浏览器获取请求,为GET请求,则从请求信息中获取所访问的HTML文件名,向服务器发送请求。

    (3)应答:服务收到请求后,搜索相关目录文件,若不存在,返回错误信息;若存在,则将html文件进行加HTTP头等处理后响应给浏览器,浏览器解析html文件,若其中还包含图片,视频等请求,则浏览器再次访问web服务器,异常获取图片视频等,并对其进行组装显示出来。

    2.使用 requests 库抓取网站数据:

    代码如下:

    1 import requests
    2 url='http://www.chinaedu.edu.cn/'
    3 #网络资源获取
    4 res=requests.get(url)
    5 res.encoding = 'utf-8'
    6 print(res.text)
    requests

    运行截图:

    3.了解网页

    写一个简单的html文件,包含多个标签,类,id

    代码如下:

     1 <body>
     2     <div id="wrapper">
     3         <header id="header">
     4             <div class="content">
     5                 <div class="inner">
     6                     <h1>这是一个头部标签</h1>
     7                     <p>然后是P标签里面有a标签,也就是点击以后会跳转到一个链接 <a href="https://www.sina.com.cn/"><br>跳转到新浪网</a> 里面<br> </p>
     8                 </div>
     9             </div>
    10             <nav class="use-middle">
    11                 <ul>
    12                     <li><a id="intro">第一</a></li>
    13                     <li><a id="work">第二</a></li>
    14                     <li><a id="about">第三</a></li>
    15                     <li><a id="contact">第四</a></li>
    16                 </ul>
    17             </nav>
    18         </header>
    19     </div>
    20 </body>
    html

    运行截图:

    4.使用 Beautiful Soup 解析网页:

    通过BeautifulSoup(html_sample,'html.parser')把上述html文件解析成DOM Tree

    select(选择器)定位数据

    找出含有特定标签的html元素

    找出含有特定类名的html元素

    找出含有特定id名的html元素

    代码如下

     1 from bs4 import BeautifulSoup
     2 with open(r'test.html','r',encoding='utf-8') as f:
     3     text=f.read()
     4 soup=BeautifulSoup(text,'html.parser')
     5 #特定标签的html元素
     6 a=soup.select('li')[2].text
     7 # 特定类名的html元素
     8 b=soup.select('.inner')[0].text
     9 # 特定id名的html元素
    10 c=soup.select('#intro')[0].text
    11 print(a,b,c)
    Beautiful Soup

    运行截图:

     

    三、提取一篇校园新闻的标题、发布时间、发布单位

    url = 'http://news.gzcc.cn/html/2019/xiaoyuanxinwen_0320/11029.html'

    代码如下: 

     1 import requests
     2 from bs4 import BeautifulSoup
     3 url='http://news.gzcc.cn/html/2019/xiaoyuanxinwen_0320/11029.html'
     4 res = requests.get(url)
     5 res.encoding = 'utf-8'
     6 res.text
     7 soup = BeautifulSoup(res.text,'html.parser')
     8 title = soup.select('.show-title')[0].text
     9 info = soup.select('.show-info')[0].text
    10 list = info.split()
    11 del list[-1]
    12 for i in list:
    13     print(i)
    提取

    运行截图:

  • 相关阅读:
    安装scrapy解决Microsoft Visual C++ 14.0 is required...
    django一对多模型以及如何在前端实现
    django实现分页功能
    django实现搜索功能
    pycharm里生成requirements.txt
    ubuntu中pwntools安装
    获取一个图片的颜色html代码
    对class文件进行反编译
    Django项目将debug模式设置为false时,静态文件出错
    Django中在xadmin中集成DjangoUeditor
  • 原文地址:https://www.cnblogs.com/lys1894/p/10610704.html
Copyright © 2011-2022 走看看