中科院爬虫完整项目

2018/07/09 23:43

项目名称:爬取中科院871个院士的简介信息

中科院爬虫完整项目_第1张图片

1.爬取目的:中科院871个院士的简介信息

中科院爬虫完整项目_第2张图片 中科院爬虫完整项目_第3张图片
2.爬取最终结果:

中科院爬虫完整项目_第4张图片

3.具体代码如下:
import re  # 不用安装(注意!!)
import os  # 文件夹等的操作(注意!!)
import time  
import requests  # http  urllib2

url = 'http://www.cae.cn/cae/html/main/col48/column_48_1.html'
html = requests.get(url)
# print(html.status_code) # 状态码200  404 500 502
html.encoding = 'utf-8'
# print(html.text) # 以文本形式返回网页

# 提取数据
# + 一次或多次  大于等于一次
# findall返回的是列表(注意!!)
number = re.findall(
    '', html.text)

i = 1  # 这里的i变量是由我创造进行明确区分所抓取的院士的数量的;
for m in number[:871]:
# for m in number[:4]:  # 这里控制要爬取的个数
# for m in number[28:88]:
    nextUrl = 'http://www.cae.cn/cae/html/main/colys/{}.html'.format(m)
    # 再次请求数据
    nexthtml = requests.get(nextUrl)
    nexthtml.encoding = 'utf-8'
    # 注意正则表达式:
	# () 提取数据
    # . 匹配除了换行\n的任意单个字符
    # * 匹配前面的表达式任意次 {1,5}
    # ? 如果前面有限定符  非贪婪模式,注意!!!
    # 尽量可能少的匹配所搜索的字符串
    text = re.findall('
(.*?)
', nexthtml.text, re.S) # re.S匹配换行的 text2 = re.sub(r'

| | |

', '', text[0]).strip() # .strip()清楚空格 # 保存数据 with open(r'E:\02中科院院士信息爬取结果.txt', mode='a+', encoding="utf-8") as f: # 特别注意这里的要以编码utf-8方式打开 f.write('{}. '.format(i) + text2 + '\n') i += 1 # 不要下载太快 # 限制下载的速度 time.sleep(1) # 程序运行到这个地方 暂停1s

你可能感兴趣的:(python爬虫)