理解爬虫原理

一、简单说明爬虫原理

通俗来讲,网络爬虫是指通过程序模拟浏览器站点的行为,向网站发起请求,把站点返回的HTML代码、JSON数据、二进制数据(图片、视频等)抓取到本地,再通过程序提取分析数据,用以代替繁琐、低效和通过复制粘贴等手段来获取数据的技术。
1480612-20190325205700402-1541366436.png

二、理解爬虫开发过程

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

用户在浏览器输入url,浏览器向web服务器发送request请求,服务器收到请求并处理后向浏览器返回response,然后浏览器通过解析response讲结果呈现给用户。在这个过程中,浏览器是可以通过爬虫分析数据的(部分网站不允许)。
1480612-20190325211940791-731994628.png

2、使用requests库抓取网站数据
import requests
url='http://news.gzcc.cn/html/xiaoyuanxinwen/'
res = requests.get(url)
print("status_code = {}".format(res.status_code))#状态字
type(res)
res.encoding='utf-8'#编码格式
print(res.text)

1480612-20190326151118862-1792188795.png

3、理解网站

编写一个简单的网页:

html_sample='''
<html>

  <head>
    <title>这是标题</title>
  </head>
  
  <body>
    <div>
      <p>这是段落<p><br>
      <a href="http://www.gzcc.cn" >广州商学院</a>
    </div>
  </body>
  
</html>
'''

网站的基本工作原理:浏览器根据源代码,解析DOM树,进行样式渲染,最后将结果返回给用户:
1480612-20190326154313953-1784888815.png

4、使用BeautifulSoup解析网页

BeautifulSoup是HTML/XML的解析器,主要是来解析整个DOM树,它提供了简单有常用懂得导航、搜索、以及修改结构树的操作,可以提高提取数据的效率。

(1) 解析标签对象属性:

from  bs4 import BeautifulSoup
soup = BeautifulSoup(html_sample,'html.parser')
print(soup.head)
print('-------------------------')
print(soup.head.text)
print('-------------------------')
print(soup.p.contents)
print('-------------------------')
print(soup.p.name)

1480612-20190326155617779-1428622025.png

(2) select选择定位数据:

from  bs4 import BeautifulSoup
soup = BeautifulSoup(html_sample,'html.parser')
print(soup.select('h1'))#选择h1标签
print(soup.select('.p1'))#选择类为p1元素
print(soup.select('#btn'))#选择id为btn的元素

1480612-20190326163006028-1601745695.png

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

import requests
from bs4 import BeautifulSoup

url = 'http://news.gzcc.cn/html/2019/xiaoyuanxinwen_0320/11029.html'
res = requests.get(url)
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text, 'html.parser')

print("标题:{}\n发布时间、发布单位: {}".format(soup.select('.show-title')[0].text, soup.select('.show-info')[0].text))

1480612-20190326170906096-481868601.png

转载于:https://www.cnblogs.com/Xi-Chen00/p/10594283.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值