爬取mooc网课程(xpath爬取实例)

代码描述:

  • 爬取的链接: http://www.imooc.com/course/list
  • 爬取的内容: 课程链接, 课程的图片url, 课程的名称, 学习人数, 课程描述
  • 爬取的内容如何存储:
    • 文件(.csv, );
    • mysql数据库;
  • 分析爬取的信息;
    • 词云
import re

import requests
import lxml.etree as etree
import csv


def get_content(url):
    """爬取页面内容的函数"""

    try:
        user_agent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.109 Safari/537.36"
        response = requests.get(url, headers={'User-Agent': user_agent})
        response.raise_for_status()  # 如果返回的状态码不是200, 则抛出异常;
        response.encoding = response.apparent_encoding  # 判断网页的编码格式, 便于respons.text知道如何解码;
    except Exception as e:
        print("爬取错误")
    else:

        print(response.url)
        print("爬取成功!")
        return response.content


def parser_content(html):
    """分析页面获取需要的信息:课程链接, 课程的图片url, 课程的名称, 学习人数, 课程描述 """
    # 1). 将html内容转化成xpath可以解析/匹配的格式;
    selector = etree.HTML(html)

    # 2). 获取每个课程的信息: <div class="course-card-container">
    courseDetails = selector.xpath('//div[@class="course-card-container"]')

    courseInfos = []
    for courseDetail in courseDetails:
        # 课程的名称: <h3 class="course-card-
### 实现MOOC平台页爬虫的方法 为了实现针对MOOC平台的页爬虫,可以采用多种技术和工具来完成这一目标。下面介绍一种基于`requests`库和Selenium WebDriver相结合的方式来进行数据抓取。 #### 使用`requests`库获取静态页面内容 对于不需要JavaScript渲染就能加载全部所需信息的简单页面来说,可以直接通过发送HTTP请求并解析返回的内容来获得想要的信息。这可以通过Python内置的标准库urllib或者第三方库如`requests`轻松做到[^3]。 ```python import requests def fetch_page(url): try: response = requests.get(url) response.raise_for_status() return response.text except Exception as e: print(f"Failed to fetch page from {url}, error: ", str(e)) return None ``` #### 利用Selenium处理动态加载内容 当遇到依赖于JavaScript执行才能显示完全的复杂交互型站时,则需要用到像Selenium这样的自动化测试工具去模拟浏览器行为,从而能够访问这些由JS生成的数据[^1]。 ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.edge.service import Service as EdgeService from webdriver_manager.microsoft import EdgeChromiumDriverManager def setup_driver(): options = webdriver.EdgeOptions() service = EdgeService(executable_path=EdgeChromiumDriverManager().install()) driver = webdriver.Edge(service=service, options=options) return driver def get_mooc_data(browser="edge", url="", search_text="", sum_pages=1, num_images=0): driver = setup_driver() try: driver.get(url) # 假设有一个输入框用于搜索课程名称 input_element = driver.find_element(By.NAME, "searchText") # 需要根据实际HTML结构调整定位方式 input_element.send_keys(search_text) submit_button = driver.find_element(By.CSS_SELECTOR, ".submit-button-class-name") # 同样需要调整为真实的CSS选择器 submit_button.click() for i in range(sum_pages): # 处理每一页的结果... pass print("Current Browser Version:", get_browser_version()) finally: driver.quit() if __name__ == '__main__': browser = "edge" url = "https://www.icourse163.org" search_text = "Python语言程序设计" sum_pages = 3 num_images = 3 get_mooc_data(browser=browser, url=url, search_text=search_text, sum_pages=sum_pages, num_images=num_images) ``` 上述代码片段展示了如何设置驱动程序以及基本的操作流程,具体细节还需要依据目标站点的具体情况进行适当修改。此外,在某些情况下可能还需要考虑验证码识别等问题[^5]。 #### 注意事项 - **遵循robots.txt规则**:在开始任何类型的Web Scraping之前,请务必查看目标站根目录下的`robots.txt`文件,了解哪些路径允许被爬取。 - **尊重API限流策略**:如果提供了官方API接口的话,应该优先尝试使用它们而不是直接对前端界面下手;同时要注意频率控制以免给服务器带来过大压力。 - **合法合规性审查**:确保自己的操作符合法律法规的要求,并且不会侵犯他人的知识产权或其他合法权益。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值