xpath爬取页面内容保存成文档_利用python爬取慕课网站上面课程

news/2024/5/16 15:36:01/文章来源:https://blog.csdn.net/weixin_34209060/article/details/112164123

1、抓取网站情况介绍

  抓取网站:http://www.imooc.com/course/list

  抓取内容:要抓取的内容是全部的课程名称,课程简介,课程URL ,课程图片URL,课程人数(由于动态渲染暂时没有获取到)

  网站图片:

5a46d634f9a732deceebaf0bbc2a7733.png

fbbf894647a5c73dbbef17c70503f141.png

7d296039e996a9abbb4d1e839a7f4c70.png

 2、建立工程

  在命令行模式建立工程

  scrapy startproject scrapy_course

  建立完成后,用pycharm打开,目录如下:

30df07073eb8e25314ecfbf43e3475d9.png

scrapy.cfg: 项目的配置文件

scrapytest/: 该项目的python模块。之后您将在此加入代码。

scrapytest/items.py: 项目中的item文件.

scrapytest/pipelines.py: 项目中的pipelines文件.

scrapytest/settings.py: 项目的设置文件.

scrapytest/spiders/: 放置spider代码的目录.

 3、创建一个爬虫

 下面按步骤讲解如何编写一个简单的爬虫。

  我们要编写爬虫,首先是创建一个Spider

  我们在scrapy_course/spiders/目录下创建一个文件MySpider.py

  文件包含一个MySpider类,它必须继承scrapy.Spider类。

  同时它必须定义一下三个属性:

  -name: 用于区别Spider。 该名字必须是唯一的,您不可以为不同的Spider设定相同的名字。

  -start_urls: 包含了Spider在启动时进行爬取的url列表。 因此,第一个被获取到的页面将是其中之一。 后续的URL则从初始的URL获取到的数据中提取。

  -parse() 是spider的一个方法。 被调用时,每个初始URL完成下载后生成的 Response 对象将会作为唯一的参数传递给该函数。 该方法负责解析返回的数据(response data),提取数据(生成item)以及生成需要进一步处理的URL的 Request 对象。

  创建完成后MySpider.py的代码如下

515faacb64b458992cc52c0c832b1f3c.png

  定义爬虫项目

  创建完了Spider文件,先不急着编写爬取代码

  我们先定义一个容器保存要爬取的数据。

  这样我们就用到了Item

  为了定义常用的输出数据,Scrapy提供了Item类。Item对象是种简单的容器,保存了爬取到得数据。 其提供了 类似于词典(dictionary-like)的API以及用于声明可用字段的简单语法。

  我们在工程目录下可以看到一个items文件,我们可以更改这个文件或者创建一个新的文件来定义我们的item。

  这里,我们在同一层创建一个新的item文件CourseItems.py

0a6a961d1d9ebb3e186f5e2b9aac1823.png

  根据如上的代码,我们创建了一个名为courseItem的容器,用来保存、抓取的信息,

  title->课程标题, url->课程url, image_url->课程标题图片, introduction->课程描述, student->学习人数

  在创建完item文件后我们可以通过类似于词典(dictionary-like)的API以及用于声明可用字段的简单语法。

  常用方法如下

ce7931f87036d48d1a4d658c6bcad2f5.png

4、编写Spider代码

定义了item后我们就能进行爬取部分的工作了。

  为了简单清晰,我们先抓取一个页面中的信息。

  首先我们编写爬取代码

  我们在上文说过,爬取的部分在MySpider类的parse()方法中进行。

  parse()方法负责处理response并返回处理的数据以及(/或)跟进的URL。

  该方法及其他的Request回调函数必须返回一个包含 Request 及(或) Item 的可迭代的对象。

  我们在之前创建的MySpider.py中编写如下代码。

  注意和上边MySpider.py的区别

# -*- coding:utf8-*-
import scrapy
import sys
import time
reload(sys)
sys.setdefaultencoding('utf-8')
from scrapy_course.items import  CourseItem
from scrapy.selector import Selector
sys.stdout = open('output.txt', 'w')
pageIndex = 0
'''
遇到不懂的问题?Python学习交流群:1004391443满足你的需求,资料都已经上传群文件,可以自行下载!
'''
class MySpider(scrapy.Spider):#用于区别Spidername = "MySpider"#允许访问的域allowed_domains = ['imooc.com']#爬取的地址start_urls = ["http://www.imooc.com/course/list"]#爬取方法def parse(self, response):# 实例一个容器保存爬取的信息item = CourseItem()# 这部分是爬取部分,使用xpath的方式选择信息,具体方法根据网页结构而定# 先获取每个课程的divsel = Selector(response)title = sel.xpath('/html/head/title/text()').extract()  # 标题print title[0]# sels = sel.xpath('//div[@class="course-card-content"]')sels = sel.xpath('//a[@class="course-card"]')pictures = sel.xpath('//div[@class="course-card-bk"]')index = 0global pageIndexpageIndex += 1print u'%s' % (time.strftime('%Y-%m-%d %H-%M-%S'))print '第' + str(pageIndex)+ '页 'print '----------------------------------------------'for box in sels:print ' '# 获取div中的课程标题item['title'] = box.xpath('.//h3[@class="course-card-name"]/text()').extract()[0].strip()print '标题:' + item['title']# 获取div中的课程简介item['introduction'] = box.xpath('.//p/text()').extract()[0].strip()print '简介:' + item['introduction']# 获取每个div中的课程路径item['url'] = 'http://www.imooc.com' + box.xpath('.//@href').extract()[0]print  '路径:' +item['url']# 获取div中的学生人数item['student'] = box.xpath('.//div[@class="course-card-info"]/text()').extract()[0].strip()print item['student']# 获取div中的标题图片地址item['image_url'] = pictures[index].xpath('.//img/@src').extract()[0]print '图片地址:' + item['image_url']index += 1yield itemtime.sleep(1)print u'%s' % (time.strftime('%Y-%m-%d %H-%M-%S'))# next =u'下一页'# url = response.xpath("//a[contains(text(),'" + next + "')]/@href").extract()# if url:#     # 将信息组合成下一页的url#     page = 'http://www.imooc.com' + url[0]#     # 返回url#     yield scrapy.Request(page, callback=self.parse)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_772733.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

两个很好玩的网站

第一个网站模拟了Windows 3的界面。请注意不只是界面,里面的程序是可以运行的,包括可以扫雷,以及使用内部的Internet Explorer去上网 第二个模拟了Visual Studio的界面和功能,请注意不只是界面,是包含功能,…

html结尾的网址有哪些,网站 URL 结尾使用斜杠是否有利于 SEO 优化?

相信对于很多人来说,只要你足够重视网站 SEO 优化,那么相比你可能也曾纠结过网站 URL 该这样操作才更有利于优化排名,前段时间子凡就成对泪雪网的 URL 做过升级,其中也曾小小的纠结过这个问题,那么就给大家分享一下。首…

如何修改WP主题优化SEO效果

为什么80%的码农都做不了架构师?>>> 现在有越来越多的SEO主题发布,寻找一款SEO优化过的主题并不是件难事,只需要百度或者google下。很多人为了更好地提高百度收录,而选择使用一些所谓的SEO主题,其实并没有…

作者为何要创作《网站转换率优化之道》

创作本书的动机来自一次痛苦的教训。 2005年年末,我(Khalid,作者之一)得到了一个机会,去领导设计和实现一家电子商务网站,那是北美最大的电子商务网站之一,这个项目获得了1500万美元的巨额预算。…

做网站用什么语言_做网站SEO优化每天都做什么

做网站SEO优化每天都做什么在SEO优化一个站点时候,通常来说我们是很忙碌的,因为网站SEO优化所涉及到很多领域,网站SEO优化并不只是SEO优化网站本身,甚至连互联网圈以及互联网圈周边的事都需要有着提前的洞察能力。哪怕是凑热点&am…

redis list应用–大型网站缓冲队列服务器

2019独角兽企业重金招聘Python工程师标准>>> 1. 起因, 随着twitter sina微博,腾讯微博的开放平台相继推出, 大部分和互联网相关的公司又多了一个营销的手段:信息同步。也即是用户把自己的新浪微博账号或者腾讯微博账号和你的网站关…

linux搭建cdn教程_网站搭建新手教程:一步一步教你拥有一个属于自己WordPress网站...

应网友要求,今天知识吧为大家分享一篇新手建站教程,本来是打算做一个视频教程的,毕竟大家看的会直观一些,但是由于我的个人电脑在并不在身边,在公司电脑录新手建站视频又不太合适,所以就为大家写一篇图文教…

23套新鲜出炉的网站和手机界面 PSD 素材

Web 用户界面,移动用户界面和线框套件对设计师很有用,因为这些套件让他们使用快速和有效的方式复制用户界面。这些类型的工具包提供了一个基本的用户界面元素,用于它们需要制作的网站或软件模型。 在这篇文章中,我们展示的是自由和…

网站导航不止有hao123!

网址导航对于我们上网而言非常的重要,在一定程度上决定了我们每天都在接触一些什么样的网络信息。我个人一直用的是hao123,总体感觉这个网址导航是非常的不错的,不过网址导航不只只有这一个好的更不只有这一个!下面是我认为挺不错…

app打开小程序_小程序可以替代app吗 小程序网站app开发

小程序唤起App,开发者如何使用新能力通过小程序唤起 App 要求很严格,小程序才能唤起 App。同时,如果没有安装 App,唤起有可能会失败。现在,开发者可以通过修改配置文件的方式,将标题栏整体隐藏,…

网站运维之道 之流程规范

2019独角兽企业重金招聘Python工程师标准>>> 流程规范 对于相对正规的网站维护工作,所有网站的所有变更必须能做到有记录,可回溯。如果是单枪匹马作战,那么要实现这个目标并不是很难,只需要把好习惯培养起来就成了&…

世界各国语言学习网站大全

2019独角兽企业重金招聘Python工程师标准>>> 亚洲(Asia) http://www.zanhe.com/ 【上海话教程】http://www.shanghai.or.jp/zw/shanghai/ 【当代上海话】 ☆☆☆☆Chinese (Cantonese)汉语(广州话)http://www.khuang.com/chinese/cantonese.asp 【粤语角…

Nginx配置SSL证书部署HTTPS网站

一、什么是 SSL 证书,什么是 HTTPS SSL 证书是一种数字证书,它使用 Secure Socket Layer 协议在浏览器和 Web 服务器之间建立一条安全通道,从而实现: 1、数据信息在客户端和服务器之间的加密传输,保证双方传递信息的安…

非常实用的10款网站数据实时分析工具

2019独角兽企业重金招聘Python工程师标准>>> 网络分析工具可以帮助你收集、预估和分析网站的访问记录,对于网站优化、市场研究来说,是个非常实用的工具。每一个网站开发者和所有者,想知道他的网站的完整的状态和访问信息&#xff…

如何上传网站程序(文件浏览器上传网页、FileZilla上传网站程序)

问题场景: 网页制作完成后,程序需上传至虚拟主机。 注意事项: Windows系统的主机请将全部网页文件直接上传到FTP根目录,即 / 。 Linux系统的主机请将全部网页文件直接上传到 /htdocs 目录下 。 由于Linux主机的文件名是区别大小写…

2021承德二中高考成绩查询,承德2021年中考看成绩是在哪个网站

中考成绩公布后家长要调整好自己的心态,不要因为自己内心的期望值对比成绩,更甚批评吵孩子,这样会让孩子产生自卑心理,孩子也会感觉到家长在考试前后完全像是变了一个人,会有很大的心理落差,甚至有一些考生…

让技术文档网站看起来更专业

文章目录前言一、技术文档网站该有的哪些方面?二、举例简约大气的布局👇有比较系统性的入门教程 👇三、 思考🤔总结前言 通常作为一名程序猿,涉猎的开发技术框架,开发工具。随着工作的深入会越来越多&…

web前端开发项目资源网站,私家珍藏!

1.CodePen: http://codepen.io/ 网站里有很多很酷的特效,而且可以看到效果的源代码,也可以看到实现效果,是一个非常不错的前端开发学习资源网站。 这个是CodePen网站里的一个效果的源码截图,是不是很酷呀! …

php获取网站favicon.ico图标 api源码

通常情况下,做网站的都会给自己的网站添加一个Icon,浏览器上一长排的标签页,用Icon来区分就显得更加醒目。现在想找一个没有Icon的网站并不好找,可见没有Icon的网站是多么的业余啊。"什么?你问Icon是什么&#xf…

可以发外链的网站_2019年网站SEO优化还有必要发外链吗?

(文/守护袁昆)曾几何时做SEO的朋友信奉内容为王,外链不皇。疯狂的发外链对网站SEO优化效果非常好,后面百度一系列的算法打击外链作弊,如今网站SEO优化还有必要发外链吗?首先要确定一个观点,外链…