帮同学做一个关于爬取教授邮箱的任务,在百度搜索中输入教授的名字+长江学者+邮箱,爬取并筛选每个教授的邮箱,最后把邮箱信息写入到Excel表中:--爬取结果争取率大概在50%-60%
大致思路如下:
先利用百度搜索关键词(不断转换关键词,效果会不一样)
利用BeautifulSoup解析到百度搜索的html内容,找到主要的部分
写正则表达式,注意要过滤掉qq邮箱、163、126、vip邮箱(学者教授根本不会使用这些邮箱,他们几乎都是使用学校edu.cn、企业邮箱、gmail之类的),这样可以提高精准率
由于正则表达式没有写好,无意把中文匹配出来了,再进一步用正则表达式把中文去除掉
发现爬取出来的结果,里面很多的新闻投稿邮箱、编辑部的邮箱,设置了过滤列表进行过滤
爬取多个邮箱,counter统计出现频数最高的,作为最终的结果,如果匹配结果只有一个,则就选它为最终的结果
最后把结果信息写回到Excel表格中
由于需要大量的检索百度搜索结果,耗时比较长
爬虫代码如下:
1 #coding:utf-8 2 import time 3 import requests 4 import urllib.parse 5 from bs4 import BeautifulSoup as BS 6 import re 7 from openpyxl import load_workbook 8 from openpyxl import Workbook 9 from collections import Counter 10 11 start_time=time.time() 12 # 加载Excel工作表以及获取表名 13 wb1 = load_workbook(r"C:\Users\wujian\Desktop\长江学者名单1998-2015.xlsx") 14 sheet1 = wb1.get_sheet_by_name("汇总") 15 # 把所有的教授名字单独取出来 16 professors=[] 17 for x in sheet1['D']: 18 if x.value!='教授姓名': 19 professors.appen