爬虫实践---Scrapy-爬取慕课网热门课程

访问的网站是:http://www.imooc.com/course/list?sort=pop



首先我们创建一个Scrapy项目

$ scrapy startproject mooc_subjects
New Scrapy project 'mooc_subjects', using template directory '/home/pit-yk/anaconda3/lib/python3.6/site-packages/scrapy/templates/project', created in:
    /media/pit-yk/办公/python/codes/知乎专栏---Ehco/Scrapy/mooc_subjects

You can start your first spider with:
    cd mooc_subjects
    scrapy genspider example example.com


$ tree
.
├── mooc_subjects
│   ├── __init__.py
│   ├── items.py
│   ├── middlewares.py
│   ├── pipelines.py
│   ├── __pycache__
│   │   ├── __init__.cpython-36.pyc
│&n
### 使用 Scrapy 抓取课程评价数据 #### 安装依赖库 首先,确保安装了必要的 Python 库 `scrapy` 和其他可能需要的包。 ```bash pip install scrapy ``` #### 创建 Scrapy 项目 初始化一个新的 Scrapy 项目来组织代码结构: ```bash scrapy startproject mooc_reviews cd mooc_reviews ``` #### 编写 Spider 文件 创建一个名为 `mooc_spider.py` 的文件,在其中定义 spider 类并设置起始 URL 列表以及解析函数。这里假设目标页面为某个特定课程详情页下的评论部分。 ```python import scrapy from ..items import MoocReviewsItem class MoocSpider(scrapy.Spider): name = 'mooc' allowed_domains = ['www.icourse163.org'] start_urls = [ 'https://www.icourse163.org/course/BIT-268001' # 替换成实际的目标URL ] def parse(self, response): items = MoocReviewsItem() all_div_comments = response.css('div.g-comment-item') # 假设这是包含每条评论HTML元素的选择器 for comment in all_div_comments: review_text = comment.css('.g-cmt-content::text').get().strip() or '' author_name = comment.css('.j-userName::text').get().strip() or '' publish_time = comment.css('.u-time::text').get().strip() or '' items['review'] = review_text items['author'] = author_name items['publish_date'] = publish_time yield items next_page_link = response.xpath('//a[contains(text(),"下一页")]/@href').extract_first() if next_page_link is not None: absolute_next_page_url = response.urljoin(next_page_link) yield scrapy.Request(url=absolute_next_page_url, callback=self.parse) ``` 注意:上述 CSS Selectors (`css`) 需要根据实际情况调整,因为不同网站 HTML 结构会有所不同[^1]。 #### 定义 Item 模型 在项目的 `items.py` 中声明用于保存抓取到的信息的数据模型类。 ```python import scrapy class MoocReviewsItem(scrapy.Item): review = scrapy.Field() author = scrapy.Field() publish_date = scrapy.Field() ``` #### 运行爬虫 最后通过命令行运行这个自定义的爬虫脚本: ```bash scrapy crawl mooc -o reviews.json ``` 这将会把所有的评论信息导出成 JSON 文件形式存储下来[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值