原生爬虫思路
模拟浏览器请求网页数据(获取html)
提取数据(从html中提取数据)
精炼数据(规范格式,如除空格)
业务实现(对精炼后的数据作需要的处理,如排序)
程序入口
举个例子:
from urllib import request
import re
# 贵州人才信息网招聘岗位的抓取
class Spider():
# 目标所在特征字符串,组中的内容即为目标:招聘岗位
root_pattern = 'name="thiszw" href="[sS]*?" target="[sS]*?" title="([sS]*?)"'
# 模拟网页请求返回网页数据
url = "http://www.gzrc.com.cn/SearchResult.php"
def __fetch_content(self):
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
page1 = request.Request(Spider.url, headers=headers)
htmls = request.urlopen(Spider.url).read()
htmls = str(htmls, encoding="GBK")
return htmls
# 数据提取
def __analyse(self, page):
job_name = re.findall(Spider.root_pattern, page)
return job_name
# 业务处理
def __show(self,job_list):
for rank in range(0,len(job_list)):
print('no.'+str(rank+1)+' : '+job_list[rank])
def go(self):
page = self.__fetch_content()
result = self.__analyse(page)
self.__show(result)
if __name__ == '__main__':
spider = Spider()
spider.go()
爬虫库(写大型爬虫如分布式、多线程)
Beautiful soup
scrap