使用Python爬取山东大学机械工程学院官网所有导师完整信息
1、准备工作
1.1材料准备
(1)装有Xpath插件的Chrom浏览器
(2)Python3.7.3
(3)urllib.request模块,lxml模块
(4)Pycharm
1.2网页准备
山东大学机械工程学院所有导师页面:https://www.mech.sdu.edu.cn/szdw/xssz.htm
山东大学机械工程学院某一导师页面(黄传真院长界面):
https://www.mech.sdu.edu.cn/info/1126/121093.htm
2、页面分析
2.1所有导师页面分析
打开https://www.mech.sdu.edu.cn/szdw/xssz.htm,检查网页的构成,如图1所示。
图1
发现所有导师的姓名以及对应的链接全部在每个li标签下的a标签中:
<a href="../info/1126/121093.htm" target="_blank">黄传真</a>
所以,只要循着这个标签向上寻找,就能定位这个a标签。
打开Xpath进行标签定位(Ctrl + Shift + x),//div[@id="teacher_main"]/div/ul/li/a/text()
,如愿找到了我们需要的导师信息,如图2所示。
图2
另外,我们还需要通过Xpath获得每个导师对应的a标签链接,只需要把text()改成@href就可以了,因为文本和链接是是在同一个a标签内//div[@id="teacher_main"]/div/ul/li/a/@href
,同样也获得了相应的链接如图3所示,这里获得的地址并不是完整的地址,后期拼合完整就行了。
图3
2.2某一导师页面分析
与2.1小节相同的套路,打开网址检查网页的构成,我们需要的所有内容都在name = _newscontent_fromname的这个form标签中,如图4所示。此外,我们需要的信息都在form标签下的一个table标签中,以及若干个p标签中。
图4
同样的,打开Xpath,获取我们需要的信息:
获取table的信息 //table//tbody//tr[position()<4]//td/text()
获取图片的地址 //table//tbody//img/@src
后文p标签内容 //div[@class="v_news_content"]/p/text()
后文p标签内容标题 //div[@class="v_news_content"]/p/strong
3、代码编写
代码实现的步骤:首先获取所有导师的姓名和地址,其次分别爬取每个导师的信息,分别为每个导师建立文件夹,保存文字信息和图片。某些导师没有上传照片,应避免报错。
以下是完整的代码:
import urllib.request
import os
from lxml import<