(01)最简单的爬数据

  • 请求:导入import requests
  • r=requests.get('中间是网址') 再提取 html=r.content
  • 解析:导入package(包)
  • from bs4 import BeautifulSoup 然后创建一BeautifulSoup对象:soup = BeautifulSoup(html,'html.parser') #html.parser是解析器a_s = div_people_list.find_all('a', attrs={'target': '_blank'}); 使用BeautifulSoup对象的find方法

div_people_list = soup.find('div', attrs={'class': 'people_list'})
这里我们使用了BeautifulSoup对象的find方法。这个方法的意思是找到带有‘div’这个标签并且参数包含" class = 'people_list' "的HTML代码。如果有多个的话,find方法就取第一个。那么如果有多个呢?正好我们后面就遇到了,现在我们要取出所有的“a”标签里面的内容:

a_s = div_people_list.find_all('a', attrs={'target': '_blank'})
这里我们使用find_all方法取出所有标签为“a”并且参数包含“ target = ‘_blank‘ ”的代码,返回一个列表。“a”标签里面的“href”参数是我们需要的老师个人主页的信息,而标签里面的文字是老师的姓名。我们继续:
这里我们使用BeautifulSoup支持的方法,使用类似于Python字典索引的方式把“a”标签里面“href”参数的值提取出来,赋值给url(Python实际上是对对象的引用),用get_text()方法把标签里面的文字提起出来。

1、请求
这里我们使用的package是requests。这是一个第三方模块(具体怎么下载以后再说),对HTTP协议进行了高度封装,非常好用。所谓HTTP协议,简单地说就是一个请求过程。我们先不管这玩意是啥,以后再讨论。这个部分,我们要实现的目的是把网页请求(或者说下载)下来。
首先我们导入requests

import requests
下面调用requests
的get函数,把网页请求下来:
r = requests.get('http://www.wise.xmu.edu.cn/people/faculty')

返回的“r”的是一个包含了整个HTTP协议需要的各种各样的东西的对象。我们先不管都有啥,先把我们需要的网页提取出来:
html = r.content
好了,到这一步我们已经获取了网页的源代码。具体源代码是什么样的呢?右键,点击“查看源文件”或者“查看源”就可以看到:
view-source:http://www.wise.xmu.edu.cn/people/faculty

2、解析
当然从这一大坨代码里面找信息太麻烦了。我们可以用浏览器提供的另外一个工具:审查元素。这里我们先不讲怎么使用审查元素,先从源代码里面找。找到的我们需要的信息如下:


这里我们使用bs4来解析。bs4是一个非常好的解析网页的库,后面我们会详细介绍。这次的解析先给大家看bs4里面最常用的几个BeautifulSoup对象的方法(method)。我们使用的这几个方法,主要是通过HTML的标签和标签里面的参数来定位,然后用特定方法(method)提取数据。
首先还是导入package:
from bs4 import BeautifulSoup
然后创建一个BeautifulSoup对象:
soup = BeautifulSoup(html,'html.parser') #html.parser是解析器
下面我们根据我们看到的网页提取。首先提取我复制的这部分的代码的第一行,先定位到这部分代码:
div_people_list = soup.find('div', attrs={'class': 'people_list'})
这里我们使用了BeautifulSoup对象的find方法。这个方法的意思是找到带有‘div’这个标签并且参数包含" class = 'people_list'
"的HTML代码。如果有多个的话,find方法就取第一个。那么如果有多个呢?正好我们后面就遇到了,现在我们要取出所有的“a”标签里面的内容:
a_s = div_people_list.find_all('a', attrs={'target': '_blank'})
这里我们使用find_all
方法取出所有标签为“a”并且参数包含“ target = ‘_blank‘
”的代码,返回一个列表。“a”标签里面的“href”参数是我们需要的老师个人主页的信息,而标签里面的文字是老师的姓名。我们继续:
for a in a_s:

url = a['href']

name = a.get_text()

这里我们使用BeautifulSoup支持的方法,使用类似于Python字典索引的方式把“a”标签里面“href”参数的值提取出来,赋值给url(Python实际上是对对象的引用),用get_text()
方法把标签里面的文字提起出来。
事实上,使用这四个方法就可以正常地解析大部分HTML了。不过如果只用这四个方法,很多程序会写的异常原始。所以我们后面再继续介绍更多解析方法。
储存

这里我们先弱化一下具体的储存方法,先输出到控制台上面。我们在刚才的代码的基础上加一行代码:
for a in a_s:

url = a['href']

name = a.get_text()

print name,url

使用print关键词把得到的数据print出来。让我们看看结果:


好的,到这里一个原型就完成了。这就是一个非常简单的爬虫,总代码不过十几行。复杂到几百几千行的爬虫,都是在这样的一个原型的基础上不断深化、不断完善得到的。

from bs4 import BeautifulSoup
import requests
r = requests.get('http://www.wise.xmu.edu.cn/people/faculty')
html = r.content

view-source:http://www.wise.xmu.edu.cn/people/faculty

soup = BeautifulSoup(html,'html.parser') #html.parser是解析器
div_people_list = soup.find('div', attrs={'class': 'people_list'})
a_s = div_people_list.find_all('a', attrs={'target': '_blank'})
for a in a_s:
url = a['href']
name = a.get_text()

for a in a_s:
    url = a['href']
    name = a.get_text()
    print (name,url)

原网页http://www.100weidu.com/weixin/CMy033CKgj

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容