爬取futurelearn课程网

 1 import requests
 2 from bs4 import BeautifulSoup
 3 import bs4
 4 import re
 5 import csv
 6 #import pandas as pd
 7 # r = requests.get("https://www.futurelearn.com/courses/climate-change-the-solutions,timeout = 30")
 8 # r.encoding = r.apparent_encoding
 9 # print(r.text)
10 def getHTMLText(url,code=‘utf-8‘):
11     try:
12         r = requests.get(url,timeout = 30)
13         r.raise_for_status()
14         r.encoding = r.apparent_encoding
15         return r.text
16     except:
17         print("获取失败")
18 #爬取基本列表
19 def getCourseList(lst,html):
20     soup = BeautifulSoup(html,‘html.parser‘)
21     div_href = soup.find_all(‘div‘,class_= ‘m-grid-of-cards m-grid-of-cards--compact‘)
22     cop = re.compile(‘href="(.*?)">‘)
23     href_get = re.findall(cop,str(div_href))
24     m =  r‘" role="button‘
25     z = ""
26     j = ‘courses‘
27     #print(href_get)
28     #print(type(href_get))
29     for i in href_get:
30         j = ‘courses‘
31         if j  in i:
32             if m in i:
33                 i=i.replace(m,z)
34                 #print("https://www.futurelearn.com"+i)
35             else:
36                 pass
37                 #print("https://www.futurelearn.com"+i)
38             i = "https://www.futurelearn.com"+i
39             lst.append(i)
40         #    print(lst)
41         else:
42             pass
43 def CourseList(lst):
44     list_1 = []
45     for i in lst:
46         list_ = []
47         url = i
48         r = requests.get(url,timeout = 30)
49
50         r.encoding = r.apparent_encoding
51         html=r.text
52         x = BeautifulSoup(html,‘html.parser‘)
53
54         for i in x.find_all(‘h1‘,class_ = ‘m-dual-billboard__heading‘):
55             list_.append(i.text)
56         #print(list_)
57
58         for a in x.find_all(‘span‘,class_ = ‘m-key-info__content‘):
59               list_.append(a.text)
60         print(list_)
61
62         for b in x.find(‘div‘,class_ = "a-content a-content--tight").find_all("p"):
63             #print(a.text)
64               list_.append(b.text)
65         print(list_)
66
67          c = x.find(‘section‘,class_ = ‘a-section a-section--alt-adjacent‘).find_all(‘p‘):
68             list_.append(c.text)
69         print(list_)
70     #     list_1.append(list_)
71     # print(list_1)
72
73
74 # def write_dictionary_to_csv(list_1,filename):
75 #     file_name=‘{}.csv‘.format(filename)
76 #     name = [‘课程名‘,‘课时‘,‘学习任务‘,‘课程性质‘,‘额外费用‘,‘介绍‘,‘话题‘,‘开始时间‘,‘服务对象‘,‘‘]
77 #     test = pd.DataFrame(columns = name,data = list_1)
78 #     test.to_csv(file_name)
79
80 def main():
81     star_url = "https://www.futurelearn.com/courses/categories/science-engineering-and-maths-courses?all_courses=1"
82     infoList = []
83     url = star_url
84     file_name_ = ‘courses‘
85     html = getHTMLText(url)
86     getCourseList(infoList,html)
87
88     CourseList(infoList)
89     #write_dictionary_to_csv(infoList,file_name_)
90
91 main()

原文地址:https://www.cnblogs.com/yangbiao6/p/12045528.html

时间: 2024-10-13 14:37:47

爬取futurelearn课程网的相关文章

爬取futurelearn课程网上的课程信息

前言 上一篇博客因为写的比较急,个人原因,导致很多地方不完善,具体功能也没有进行说明,这一篇 算是对上一篇的完善,以及对静态网页爬取的一个总结. 要求,计划 爬取futurelearn课程网中subjects类别中science-engineering-and-maths-courses课程中全部课程, 其中,每个课程需要爬取'课程名', '课程性质与阶段学习', '介绍', '话题', '开始时间', '服务对象', '老师', '课程创作人'等具体内容 初始URL:https://www.f

第一篇博客(python爬取小故事网并写入mysql)

前言: 这是一篇来自整理EVERNOTE的笔记所产生的小博客,实现功能主要为用广度优先算法爬取小故事网,爬满100个链接并写入mysql,虽然CS作为双学位已经修习了三年多了,但不仅理论知识一般,动手能力也很差,在学习的空余时间前前后后DEBUG了很多次,下面给出源代码及所遇到的BUG. 本博客参照代码及PROJECT来源:http://kexue.fm/archives/4385/ 源代码: 1 import requests as rq 2 import re 3 import codecs

利用Scrapy爬取1905电影网

本文将从以下几个方面讲解Scrapy爬虫的基本操作 Scrapy爬虫介绍 Scrapy安装 Scrapy实例--爬取1905电影网 相关资料 Scrapy 爬虫介绍 Scrapy是Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改.它也提供了多种类型爬虫的基类,如BaseSpider.sitemap爬虫等,最

Python爬取中国天气网天气

Python爬取中国天气网天气 基于requests库制作的爬虫. 使用方法:打开终端输入 "python3 weather.py 北京(或你所在的城市)" 程序正常运行需要在同文件夹下加入一个"data.csv"文件,内容请参考链接:https://www.cnblogs.com/Rhythm-/p/9255190.html 运行效果: 源码: import sys import re import requests import webbrowser from

爬虫----爬取校花网视频

import requests import re import time import hashlib def get_page(url): print('GET %s' %url) try: response=requests.get(url) if response.status_code == 200: return response.content except Exception: pass def parse_index(res): obj=re.compile('class="i

python爬虫入门练习,使用正则表达式和requests爬取LOL官网皮肤

刚刚python入门,学会了requests模块爬取简单网页,然后写了个爬取LOL官网皮肤的爬虫,代码奉上 #获取json文件#获取英雄ID列表#拼接URL#下载皮肤 #导入re requests模块 import requestsimport reimport time def Download_LOL_Skin(): #英雄信息Json文件地址:https://lol.qq.com/biz/hero/champion.js #获取英雄信息列表 json_url = "https://lol.

简单爬取微医网

一.利用request和xpath爬取微医网 #!/usr/bin/env python # -*- coding: utf-8 -*- #author tom import requests from lxml import etree import pymongo #爬取微医网类 class DoctorSpider(): #初始化应该具有的一些属性 def __init__(self): self.headers={'User-Agent': 'Mozilla/5.0 (Windows N

selenium爬取煎蛋网

selenium爬取煎蛋网 直接上代码 from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as ES import requests import urllib.requ

使用 Scrapy 爬取去哪儿网景区信息

Scrapy 是一个使用 Python 语言开发,为了爬取网站数据,提取结构性数据而编写的应用框架,它用途广泛,比如:数据挖掘.监测和自动化测试.安装使用终端命令 pip install Scrapy 即可. Scrapy 比较吸引人的地方是:我们可以根据需求对其进行修改,它提供了多种类型的爬虫基类,如:BaseSpider.sitemap 爬虫等,新版本提供了对 web2.0 爬虫的支持. 1 Scrapy 介绍 1.1 组成 Scrapy Engine(引擎):负责 Spider.ItemP