需求分析
- 抓取范围:自贡市的景点
- 数据类型:景点名称,简要介绍,风景图片,地理位置,经纬度,开放时间,门票价格以及距离最近的美食(包括餐厅名称,经纬度,其它摘要)
页面数据分析
入口页面: 景点列表
该页面需要得到的数据: 景点详细信息url,其它景点列表页面url
- 景点摘要节点: 存放在 class=”list_item clrfix”的 ul中的li中
- 对li分析: 景点链接存放在 class=”titlink” 的a标签中
- 其它景点列表页面的url:class = “page” 的a标签中
景点介绍页面: 介绍页面
- 景点名称:
<h1 class="tit">自贡恐龙博物馆<span class="entit"></span></h1>
- 简要介绍:
<div class="e_db_content_box">...</div>
- 经纬度:
<div class="mapbox" latlng="29.401157247254,104.8338724919" data-beacon="map">...</div>
图片链接:
地理位置:
<td class="td_l">
<dl>
<dt>地址:</dt>
<dd><span>自贡市大安区燊海井路四段268号 </span></dd>
</dl>
</td>
- 开放时间:
<td class="td_r">
<dl class="m_desc_right_col">
<dt>开放时间:</dt>
<dd><span>营业时间:8:30-17:30。<br />
讲解服务时间:9:20-16:30。</span></dd>
</dl>
</td>
- 门票价格:
<div class="e_db_content_box e_db_content_dont_indent">
<p>40元</p>
</div>
- 附近美食:
美食信息未直接显示在当前页面,需要找到美食信息页面url,并进行二重爬取
美食信息url:
data-beacon=’more_around_poi’ 的第二个a标签
在从美食信息列表中获取 美食数据:
class = “list_item clrfix” 的ul中的li
在对每一项进行解析
name: class=”cn_tit”
latlng:<li class="item" data-lat="29.398821" data-lng="104.830849">
detail:class = “ct” 的div中
爬虫框架
基本组成:
url管理 + 页面下载 + 页面数据分析 + 数据导出
运行机制:
单线程顺序执行引用的模块:
- urllib.request
用于下载页面数据
content = urllib.request.urlopen("http://www.*********").read()
//返回bytes对象
- bs4.BeautifulSoup
用于解析页面数据
soup = bs4.BeautifulSoup(content, 'html.parser', from_encoding='utf-8')