目录
一、选题背景 .......................................................................................... 二、爬虫原理 .......................................................................................... 三、爬虫历史和分类 ............................................................................... 四、常用爬虫框架比较 ........................................................................... 五、数据爬取实战(豆瓣网爬取电影数据) ......................................... 1分析网页 ............................................................................................... 2爬取数据 ............................................................................................... 3数据整理、转换 .................................................................................... 4数据保存、展示 .................................................................................... 5技术难点关键点 .................................................................................... 六、总结 .................................................................................................
一、 选题背景 二、 爬虫原理 三、 爬虫历史和分类 四、 常用爬虫框架比较
Scrapy框架:Scrapy框架是一套比较成熟的Python爬虫框架,是使用Python开发的快速、高层次的信息爬取框架,可以高效的爬取web页面并提取出结构化数据。Scrapy应用范围很广,爬虫开发、数据挖掘、数据监测、自动化测试等。
Crawley框架:Crawley也是Python开发出的爬虫框架,该框架致力于改变人们从互联网中提取数据的方式。
Portia框架:Portia框架是一款允许没有任何编程基础的用户可视化地爬取网页的爬虫框架。
newspaper框架:newspaper框架是一个用来提取新闻、文章以及内容分析的Python爬虫框架。
Python-goose框架:Python-goose框架可提取的信息包括:<1>文章主体内容;<2>文章主要图片;<3>文章中嵌入的任heYoutube/Vimeo视频;<4>元描述;<5>元标签
五、数据爬取实战(豆瓣网爬取电影数据)
1分析网页
# 获取html源代码 def __getHtml(): data = [] pageNum = 1 pageSize = 0 try:
while (pageSize <= 125): 2爬取数据
def __getData(html): title = [] # 电影标题 #rating_num = [] # 评分 range_num = [] # 排名 #rating_people_num = [] # 评价人数 movie_author = [] # 导演 data = {}
# bs4解析html soup = BeautifulSoup(html, \"html.parser\")
for li in soup.find(\"ol\'grid_view'}).find_all(\"li\"):
title.append(li.find(\"span\ #rating_num.append(li.find(\"div\class_='star').find(\"span\ range_num.append(li.find(\"div\
class_='pic').find(\"em\").text) #spans = li.find(\"div\class_='star').find_all(\"span\") #for x in range(len(spans)): # if x <= 2: # pass # else: # rating_people_num.append(spans[x].string[-len(spans[x].string):-3]) str = li.find(\"div\
class_='').text.lstrip() index = str.find(\"主\") if (index == -1):
index = str.find(\"...\")
print(li.find(\"div\class_='pic').find(\"em\").text)
if (li.find(\"div\== 210):
index = 60 # print(\"aaa\") # print(str[4:index]) movie_author.append(str[4:index])
data['title'] = title
#data['rating_num'] = rating_num data['range_num'] = range_num
#data['rating_people_num'] = rating_people_num data['movie_author'] = movie_author
return data 3数据整理、转换 f.write(\"\") f.write(\" f.write(\" #f.write(\" 名 #f.write(\"\") \") f.write(\"\")电影 \")评分 \") f.write(\"排 \")评价人数 \") f.write(\"导演 \") f.write(\"
f.write(\"
\") for data in datas:for i in range(0, 25): f.write(\"
# f.write(\"
# f.write(\"
f.write(\"
\") f.write(\"