教你用python爬取w3shcool的课程并且保存到本地的代码实例

本文主要介绍python爬取w3shcool的jquery的课程并且保存到本地的方法解析。具有很好的参考价值。下面跟着小编一起来看下吧

最近在忙于找工作,闲暇之余,也找点爬虫项目练练手,写写代码,知道自己是个菜鸟,但是要多加练习,书山有路勤为径。各位爷有测试坑可以给我介绍个啊,自动化,功能,接口都可以做。

首先呢,我们明确需求,很多同学呢,有事没事就想看看一些技术,比如我想看看JQuery的语法呢,可是我现在没有网络,手机上也没有电子书,真的让我们很难受,那么别着急啊,你这需求我在这里满足你,首先呢,你的需求是获取JQuery的语法的,那么我在看到这个需求,我有响应的网站那么我们接下来去分析这个网站。www.w3school.com.cn/jquery/jquery_syntax.asp 这是语法url, http://www.w3school.com.cn/jquery/jquery_intro.asp 这是简介的url,那么我们拿到很多的url分析到,我们的www.w3school.com.cn/jquery是相同的,那么我们在来分析在界面怎么可以获取得到这些,我们可以看到右面有相应的目标栏,那么我们去分析下

教你用python爬取w3shcool的课程并且保存到本地的代码实例

我们来看下这些链接,。我们可以吧这些链接和http://www.w3school.com.cn拼接到一起。然后组成我们新的url,

上代码

立即学习“Python免费学习笔记(深入)”;

import urllib.requestfrom bs4 import BeautifulSoup import timedef head(): headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0' } return headersdef parse_url(url): hea=head() resposne=urllib.request.Request(url,headers=hea) html=urllib.request.urlopen(resposne).read().decode('gb2312') return htmldef url_s(): url='http://www.w3school.com.cn/jquery/index.asp' html=parse_url(url) soup=BeautifulSoup(html) me=soup.find_all(id='course') m_url_text=[] m_url=[] for link in me:  m_url_text.append(link.text)  m=link.find_all('a')  for i in m:   m_url.append(i.get('href')) for i in m_url_text:  h=i.encode('utf-8').decode('utf-8')  m_url_text=h.split('') return m_url,m_url_text

登录后复制

这样我们使用url_s这个函数就可以获取我们所有的链接。

['/jquery/index.asp', '/jquery/jquery_intro.asp', '/jquery/jquery_install.asp', '/jquery/jquery_syntax.asp', '/jquery/jquery_selectors.asp', '/jquery/jquery_events.asp', '/jquery/jquery_hide_show.asp', '/jquery/jquery_fade.asp', '/jquery/jquery_slide.asp', '/jquery/jquery_animate.asp', '/jquery/jquery_stop.asp', '/jquery/jquery_callback.asp', '/jquery/jquery_chaining.asp', '/jquery/jquery_dom_get.asp', '/jquery/jquery_dom_set.asp', '/jquery/jquery_dom_add.asp', '/jquery/jquery_dom_remove.asp', '/jquery/jquery_css_classes.asp', '/jquery/jquery_css.asp', '/jquery/jquery_dimensions.asp', '/jquery/jquery_traversing.asp', '/jquery/jquery_traversing_ancestors.asp', '/jquery/jquery_traversing_descendants.asp', '/jquery/jquery_traversing_siblings.asp', '/jquery/jquery_traversing_filtering.asp', '/jquery/jquery_ajax_intro.asp', '/jquery/jquery_ajax_load.asp', '/jquery/jquery_ajax_get_post.asp', '/jquery/jquery_noconflict.asp', '/jquery/jquery_examples.asp', '/jquery/jquery_quiz.asp', '/jquery/jquery_reference.asp', '/jquery/jquery_ref_selectors.asp', '/jquery/jquery_ref_events.asp', '/jquery/jquery_ref_effects.asp', '/jquery/jquery_ref_manipulation.asp', '/jquery/jquery_ref_attributes.asp', '/jquery/jquery_ref_css.asp', '/jquery/jquery_ref_ajax.asp', '/jquery/jquery_ref_traversing.asp', '/jquery/jquery_ref_data.asp', '/jquery/jquery_ref_dom_element_methods.asp', '/jquery/jquery_ref_core.asp', '/jquery/jquery_ref_prop.asp'], ['jQuery 教程', '', 'jQuery 教程', 'jQuery 简介', 'jQuery 安装', 'jQuery 语法', 'jQuery 选择器', 'jQuery 事件', '', 'jQuery 效果', '', 'jQuery 隐藏/显示', 'jQuery 淡入淡出', 'jQuery 滑动', 'jQuery 动画', 'jQuery stop()', 'jQuery Callback', 'jQuery Chaining', '', 'jQuery HTML', '', 'jQuery 获取', 'jQuery 设置', 'jQuery 添加', 'jQuery 删除', 'jQuery CSS 类', 'jQuery css()', 'jQuery 尺寸', '', 'jQuery 遍历', '', 'jQuery 遍历', 'jQuery 祖先', 'jQuery 后代', 'jQuery 同胞', 'jQuery 过滤', '', 'jQuery AJAX', '', 'jQuery AJAX 简介', 'jQuery 加载', 'jQuery Get/Post', '', 'jQuery 杂项', '', 'jQuery noConflict()', '', 'jQuery 实例', '', 'jQuery 实例', 'jQuery 测验', '', 'jQuery 参考手册', '', 'jQuery 参考手册', 'jQuery 选择器', 'jQuery 事件', 'jQuery 效果', 'jQuery 文档操作', 'jQuery 属性操作', 'jQuery CSS 操作', 'jQuery Ajax', 'jQuery 遍历', 'jQuery 数据', 'jQuery DOM 元素', 'jQuery 核心', 'jQuery 属性', '', ''])

登录后复制

这是所有链接还有对应链接的所对应的语法模块的名字。那么我们接下来就是去拼接urls,使用的是str的拼接

 ['http://www.w3school.com.cn//jquery/index.asp', 'http://www.w3school.com.cn//jquery/jquery_intro.asp', 'http://www.w3school.com.cn//jquery/jquery_install.asp', 'http://www.w3school.com.cn//jquery/jquery_syntax.asp', 'http://www.w3school.com.cn//jquery/jquery_selectors.asp', 'http://www.w3school.com.cn//jquery/jquery_events.asp', 'http://www.w3school.com.cn//jquery/jquery_hide_show.asp', 'http://www.w3school.com.cn//jquery/jquery_fade.asp', 'http://www.w3school.com.cn//jquery/jquery_slide.asp', 'http://www.w3school.com.cn//jquery/jquery_animate.asp', 'http://www.w3school.com.cn//jquery/jquery_stop.asp', 'http://www.w3school.com.cn//jquery/jquery_callback.asp', 'http://www.w3school.com.cn//jquery/jquery_chaining.asp', 'http://www.w3school.com.cn//jquery/jquery_dom_get.asp', 'http://www.w3school.com.cn//jquery/jquery_dom_set.asp', 'http://www.w3school.com.cn//jquery/jquery_dom_add.asp', 'http://www.w3school.com.cn//jquery/jquery_dom_remove.asp', 'http://www.w3school.com.cn//jquery/jquery_css_classes.asp', 'http://www.w3school.com.cn//jquery/jquery_css.asp', 'http://www.w3school.com.cn//jquery/jquery_dimensions.asp', 'http://www.w3school.com.cn//jquery/jquery_traversing.asp', 'http://www.w3school.com.cn//jquery/jquery_traversing_ancestors.asp', 'http://www.w3school.com.cn//jquery/jquery_traversing_descendants.asp', 'http://www.w3school.com.cn//jquery/jquery_traversing_siblings.asp', 'http://www.w3school.com.cn//jquery/jquery_traversing_filtering.asp', 'http://www.w3school.com.cn//jquery/jquery_ajax_intro.asp', 'http://www.w3school.com.cn//jquery/jquery_ajax_load.asp', 'http://www.w3school.com.cn//jquery/jquery_ajax_get_post.asp', 'http://www.w3school.com.cn//jquery/jquery_noconflict.asp', 'http://www.w3school.com.cn//jquery/jquery_examples.asp', 'http://www.w3school.com.cn//jquery/jquery_quiz.asp', 'http://www.w3school.com.cn//jquery/jquery_reference.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_selectors.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_events.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_effects.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_manipulation.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_attributes.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_css.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_ajax.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_traversing.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_data.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_dom_element_methods.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_core.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_prop.asp']

登录后复制

那么我们有这个所有的urls,那么我们来分析下,文章正文。

分析可以得到我们的所有的正文都是在一个id=maincontent中,那么我们直接解析每个界面中的id=maincontent的标签,获取响应的text文档,并且保存就好。

所以我们所有的代码如下:

import urllib.requestfrom bs4 import BeautifulSoup import timedef head(): headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0' } return headersdef parse_url(url): hea=head() resposne=urllib.request.Request(url,headers=hea) html=urllib.request.urlopen(resposne).read().decode('gb2312') return htmldef url_s(): url='http://www.w3school.com.cn/jquery/index.asp' html=parse_url(url) soup=BeautifulSoup(html) me=soup.find_all(id='course') m_url_text=[] m_url=[] for link in me:  m_url_text.append(link.text)  m=link.find_all('a')  for i in m:   m_url.append(i.get('href')) for i in m_url_text:  h=i.encode('utf-8').decode('utf-8')  m_url_text=h.split('') return m_url,m_url_textdef xml(): url,url_text=url_s() url_jque=[] for link in url:  url_jque.append('http://www.w3school.com.cn/'+link) return url_jquedef xiazai(): urls=xml() i=0 for url in urls:  html=parse_url(url)  soup=BeautifulSoup(html)  me=soup.find_all(id='maincontent')  with open(r'%s.txt'%i,'wb') as f:   for h in me:    f.write(h.text.encode('utf-8'))    print(i)  i+=1if __name__ == '__main__': xiazai()

登录后复制

import urllib.requestfrom bs4 import BeautifulSoup import timedef head(): headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0' } return headersdef parse_url(url): hea=head() resposne=urllib.request.Request(url,headers=hea) html=urllib.request.urlopen(resposne).read().decode('gb2312') return htmldef url_s(): url='http://www.w3school.com.cn/jquery/index.asp' html=parse_url(url) soup=BeautifulSoup(html) me=soup.find_all(id='course') m_url_text=[] m_url=[] for link in me:  m_url_text.append(link.text)  m=link.find_all('a')  for i in m:   m_url.append(i.get('href')) for i in m_url_text:  h=i.encode('utf-8').decode('utf-8')  m_url_text=h.split('') return m_url,m_url_textdef xml(): url,url_text=url_s() url_jque=[] for link in url:  url_jque.append('http://www.w3school.com.cn/'+link) return url_jquedef xiazai(): urls=xml() i=0 for url in urls:  html=parse_url(url)  soup=BeautifulSoup(html)  me=soup.find_all(id='maincontent')  with open(r'%s.txt'%i,'wb') as f:   for h in me:    f.write(h.text.encode('utf-8'))    print(i)  i+=1if __name__ == '__main__': xiazai()

登录后复制

结果

教你用python爬取w3shcool的课程并且保存到本地的代码实例

好了至此,我们的爬取工作完成,剩下的就是小修小布,大的内容我们都应该完成了。

其实python的爬虫还是很简单的,只要我们会分析网站的元素,找出所有元素的通项就可以很好的去分析和解决我们的问题

以上就是教你用python爬取w3shcool的课程并且保存到本地的代码实例的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2273621.html

(0)
上一篇 2025年2月27日 13:31:01
下一篇 2025年2月27日 09:11:22

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python对SQLite数据库操作的实例详解

    本文主要介绍了python对sqlite数据库操作的简单教程。sqlite是一种嵌入式数据库,它的数据库就是一个文件。由于sqlite本身是c写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在ios和android的app中都可以…

    编程技术 2025年2月27日
    200
  • Python对MySQL数据操作的实例详解

    本文介绍python3使用pymysql连接数据库,并实现简单的增删改查。具有很好的参考价值。下面跟着小编一起来看下吧 本文介绍Python3使用PyMySQL连接数据库,并实现简单的增删改查。 什么是PyMySQL? PyMySQL是Py…

    编程技术 2025年2月27日
    200
  • 迭代器捕获Generator返回值的python代码实例

    这篇文章主要介绍了python使用迭代器捕获generator返回值的方法,结合具体实例形式分析了python迭代器获取生成器返回值的相关操作技巧,需要的朋友可以参考下 本文实例讲述了Python使用迭代器捕获Generator返回值的方法…

    编程技术 2025年2月27日
    200
  • 详细介绍python中的yield与generator

    这篇文章主要由浅入深讲解了python中yield与generator的相关资料,文中介绍的非常详细,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。 前言 本文将由浅入深详细介绍yield以及generator,包括以下内容:什么…

    编程技术 2025年2月27日
    200
  • 教你做自动发邮件脚本的python代码实例

    本文主要介绍了python自动发邮件脚本的相关知识。具有很好的参考价值,下面跟着小编一起来看下吧 缘起 这段时间给朋友搞了个群发邮件的脚本,为了防止进入垃圾邮件,做了很多工作,刚搞完,垃圾邮件进入率50%,觉得还不错,如果要将垃圾邮件的进入…

    2025年2月27日
    200
  • Python中Django发送带图片和附件的邮件的实例详解

    本篇文章主要介绍了python中django发送带图片和附件的邮件 ,非常具有实用价值,需要的朋友可以参考下。 最近需要做集团的SRC系统。暂无安全研发,所以只能找我这个小菜兼职开发。系统使用Django框架,在整个过程中,有许多奇特的需求…

    2025年2月27日
    200
  • 实例详解python中类的继承

    这篇文章主要介绍了python类的继承实例详解的相关资料,需要的朋友可以参考下 python 类的继承 对于许多文章讲解python类的继承,大多数都是说一些什么oop,多态等概念,我认为这样可能对有一定基础的开发者帮助不是那么大,不如直接…

    编程技术 2025年2月27日
    200
  • 详解关于windows上安装Anaconda和python的方法

    本文主要给大家介绍windows上安装anaconda和python的教程详解,非常不错,具有参考借鉴价值,需要的朋友参考下  一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1、不开源,价格贵 2…

    2025年2月27日 编程技术
    200
  • python调度框架APScheduler使用的实例详解

    本篇文章主要介绍了详解python调度框架apscheduler使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 最近在研究python调度框架APScheduler使用的路上,那么今天也算个学习笔记吧! #…

    编程技术 2025年2月27日
    200
  • 关于Python中多线程的详解

    这篇文章主要介绍了python 多线程实例详解的相关资料,需要的朋友可以参考下 Python 多线程实例详解 多线程通常是新开一个后台线程去处理比较耗时的操作,Python做后台线程处理也是很简单的,今天从官方文档中找到了一个Demo. 实…

    编程技术 2025年2月27日
    200

发表回复

登录后才能评论