python爬虫1

Hey

这是我的第一篇博客。

本次实例完整程序地址:源码地址

这是一篇完全给新手写的爬虫教程、也是我第一次写博文···也不知道怎么写…

我们所要做的是随时获取燕大图书馆内书籍的馆藏信息,并保存到本地,就本着给完全不懂的新手弄明白为目的来讲解吧

基础环境部分:

工欲其事必先利器,要想随时获得燕大图书馆的书籍信息,我们需要下面这几把斧子!

  1. Python基础运行环境: 本篇教程采用Python3 来写

  2. Requests: urllib的升级版本打包了全部功能并简化了使用方法

  3. beautifulsoup: 一个可以从HTML或XML文件中提取数据的

  4. LXML: 一个HTML解析包 用于辅助beautifulsoup解析网页

  5. PyCharm: 一个颜值特高又好用的PythonIDE工具!

爬虫简介及原理:

网络爬虫,也叫网络蜘蛛(Web Spider)。它根据网页地址(URL)爬取网页内容,而网页地址(URL)就是我们在浏览器中输入的网站链接。比如:
http://baidu.com 它就是一个URL。

一个简单爬虫的诞生大慨需要下面几个步骤

  1. 爬虫入口:顾名思义我需要程序从什么地方开始获取网页
  2. 存储数据:如果获取的网页有你需要的内容则取出数据保存
  3. 找到资料所在的地址:如果你获取到的网页没有你需要的数 据,但是有前往该数据页面的地址URL,则获取这个地址URL,再获取该URL的页面内容(也就等于当作爬虫入口了)

在讲解爬虫内容之前,我们需要先学习一项写爬虫的必备技能:审查元素(如果已掌握,可跳过此部分内容)。

  1. 审查元素

在浏览器的地址栏输入URL地址,在网页处右键单击,找到检查。(不同浏览器的叫法不同,Chrome浏览器叫做检查,Firefox浏览器叫做查看元素,但是功能都是相同的)

进入燕大图书馆官网http://library.ysu.edu.cn/index.aspx

  1. 简单实例

网络爬虫的第一步就是根据URL,获取网页的HTML信息。在Python3中,可以使用urllib.request和requests进行网页爬取。

  • urllib库是python内置的,无需我们额外安装,只要安装了Python就可以使用这个库。

  • requests库是第三方库,需要我们自己安装。

requests库强大好用,所以本文使用requests库获取网页的HTML信息。
requests库的github地址:https://github.com/requests/requests

requests库的基础方法

爬虫实战

  1. 实战背景

燕大图书馆: http://library.ysu.edu.cn/index.aspx

python爬虫1_第1张图片

本文以《鲁迅全集》为例获取相应图书信息

  1. 操作步骤
  • 我们的第一段代码:用作获取鲁迅全集这个页面。
import requests ##导入requests
from bs4 import BeautifulSoup ##导入bs4中的BeautifulSoup
import os

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}##浏览器请求头(大部分网站没有这个请求头会报错、请务必加上)
all_url = 'http://202.206.242.99:8080/opac/openlink.php?strSearchType=title&match_flag=forward&historyCount=1&strText=%E9%B2%81%E8%BF%85%E5%85%A8%E9%9B%86&doctype=ALL&displaypg=20&showmode=list&sort=CATA_DATE&orderby=desc&location=ALL'  ##开始的URL地址
start_html = requests.get(all_url,  headers=headers)  ##使用requests中的get方法来获取all_url(就是:http://www.mzitu.com/all这个地址)的内容 headers为上面设置的请求头、请务必参考requests官方文档解释
print(start_html.text) ##打印出start_html (请注意,concent是二进制的数据,一般用于下载图片、视频、音频、等多媒体内容是才使用concent, 对于打印网页内容请使用text)

可以看到浏览器刷新后的网页:
python爬虫1_第2张图片
以下是返回来的html文本:









  燕山大学图书馆v5.6书目检索系统 















| 暂存书架(0) | 登录

检索到 75 条 题名=鲁 迅全集 的结果    

 


所有图书

网页便由html语言编写,其中使用的图片,视频甚至音频等多媒体语言都由html中"调用",文本语言直接写入html,各种超文本语言由超链接实现嵌入html语言中。如下:


我们的任务是获取相关搜索的所有书名、作者、馆藏数目以及图书状况。我们先观察一下整个网页的结构,由web中图书的顺序排列,我们猜想每本书的相关信息是否也整齐直观的的排列呢?

python爬虫1_第3张图片

事实上网站制作者也真的整齐排列了每本书的信息段落,可以看到每本书对应一个标签

  • ......
  • 。那么总体思路便是我们弄清一本书的相关信息(书全名,借阅状态以及馆藏地点),剩下的循环来搞定嘛。

    python爬虫1_第4张图片
    定位到书籍全名与作者

    python爬虫1_第5张图片
    同理得到馆藏地与借阅信息,不过鉴于每本书的馆藏信息不同,为了考虑到各种情况,我们应该多看几本书的标签。

    TO BE CONTINUE

    你可能感兴趣的:(python,python)