用scrapy爬取学校教师的个人信息

基于scrapy和beautifulsoup框架,可以方便地从网页爬取我们所需要的信息,无论中文,数字或者是英文信息,均可以按找我们希望的方式爬取下来。

这次我想爬取我们学院主页的所有老师的个人信息,包括职称,电话,办公室地址和电子邮箱。

pipelines如下:

from teacher1 import settings
import os
import urllib
from bs4 import BeautifulSoup

class TeacherPipeline(object):
    def process_item(self, item, spider):
        dir_path = '%s/%s' % (settings.PAGES_STORE, spider.name)  # 存储路径
        print 'dir_path', dir_path
        if not os.path.exists(dir_path):
            os.makedirs(dir_path)

        file_path = '%s/teacherList.doc' % dir_path  # 1015修改产生联系方式
        with open(file_path, 'wb') as file_writer:
            for page_url in item['page_urls']:
                print 'http://me.sjtu.edu.cn/sz_minglu/'+page_url
                html = urllib.urlopen('http://me.sjtu.edu.cn/sz_minglu/'+page_url).read()  # 
教师与信息课程的搜索通常是通过网络虫技术来实现的。以下是一个简化的步骤描述: 1. **确定目标网站**:首先,你需要找到提供教师课程信息的在线平台,比如学校的官网、教学管理系统或者公开的教学资源网站。 2. **分析数据结构**:查看网页源代码或使用开发者工具分析数据,了解教师信息和课程列表通常是如何组织和呈现的,包括可能的数据标签(如`<div class="teacher-course">...</div>`)。 3. **选择合适的虫框架**:Python的Scrapy 或者 BeautifulSoup 等库都是常见的选择,它们能帮助解析HTML和提取所需信息。 4. **编写虫脚本**: - 导入所需的库: ```python import requests from bs4 import BeautifulSoup ``` - 使用`requests.get(url)`获取页面内容: ```python url = "http://example.com/teacher_courses" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') ``` - 利用BeautifulSoup查找并提取教师和课程信息: ```python teacher_list = soup.find_all('div', {'class': 'teacher'}) for teacher in teacher_list: name = teacher.find('h2').text courses = [course.text for course in teacher.find_all('a', href=True)] # 存储到数据库或字典中 ``` 5. **处理和存储数据**: - 创建数据库连接,插入教师信息和课程链接: ```python import sqlite3 conn = sqlite3.connect("teacher_info.db") cursor = conn.cursor() for teacher_data in teacher_info: # INSERT INTO ... query here conn.commit() conn.close() ``` 6. **异常处理和定期更新**:记得处理可能出现的HTTP错误、网络问题,并设置定时任务(如cron job)定期抓取新数据,保持信息库的实时性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值