版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python网络爬虫实习报告Python网络爬虫实习报告Python网络爬虫实习(报告)-13-目录一、选题背景 -2-二、爬虫原理 -2-三、爬虫历史和分类 -2-四、常用爬虫框架比较 -5-五、数据爬取实战(豆瓣网爬取电影数据) -6-1分析网页 -6-2爬取数据 -7-3数据整理、转换 -10-4数据保存、展示 -12-5技术难点关键点 -12-六、总结 -14-
选题背景爬虫原理爬虫历史和分类常用爬虫框架比较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):
#headers={'User-Agent':'Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.11(KHTML,likeGecko)Chrome/23.0.1271.64Safari/537.11',
#'Referer':None#注意如果依然不能抓取的话,这里可以设置抓取网站的host
#}
#opener=urllib.request.build_opener()
#opener.addheaders=[headers]
url="/top250?start="+str(pageSize)+"&filter="+str(pageNum)
#data['html%s'%i]=urllib.request.urlopen(url).read().decode("utf-8")
data.append(urllib.request.urlopen(url).read().decode("utf-8"))
pageSize+=25
pageNum+=1
print(pageSize,pageNum)
exceptExceptionase:
raisee
returndata2爬取数据def__getData(html):
title=[]#电影标题
#rating_num=[]#评分
range_num=[]#排名
#rating_people_num=[]#评价人数
movie_author=[]#导演
data={}
#bs4解析html
soup=BeautifulSoup(html,"html.parser")
forliinsoup.find("ol",attrs={'class':'grid_view'}).find_all("li"):
title.append(li.find("span",class_="title").text)
#rating_num.append(li.find("div",class_='star').find("span",class_='rating_num').text)
range_num.append(li.find("div",class_='pic').find("em").text)
#spans=li.find("div",class_='star').find_all("span")
#forxinrange(len(spans)):
#ifx<=2:
#pass
#else:
#rating_people_num.append(spans[x].string[-len(spans[x].string):-3])
str=li.find("div",class_='bd').find("p",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",class_='pic').find("em").text==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
returndata3数据整理、转换def__getMovies(data):
f=open('F://douban_movie.html','w',encoding='utf-8')
f.write("<html>")
f.write("<head><metacharset='UTF-8'><title>Inserttitlehere</title></head>")
f.write("<body>")
f.write("<h1>爬取豆瓣电影</h1>")
f.write("<h4>作者:刘文斌</h4>")
f.write("<h4>时间:"+nowtime+"</h4>")
f.write("<hr>")
f.write("<tablewidth='800px'border='1'align=center>")
f.write("<thead>")
f.write("<tr>")
f.write("<th><fontsize='5'color=green>电影</font></th>")
#f.write("<thwidth='50px'><fontsize='5'color=green>评分</font></th>")
f.write("<thwidth='50px'><fontsize='5'color=green>排名</font></th>")
#f.write("<thwidth='100px'><fontsize='5'color=green>评价人数</font></th>")
f.write("<th><fontsize='5'color=green>导演</font></th>")
f.write("</tr>")
f.write("</thead>")f.write("<tbody>")
fordataindatas:
foriinrange(0,25):
f.write("<tr>")
f.write("<tdstyle='color:orange;text-align:center'>%s</td>"%data['title'][i])
#f.write("<tdstyle='color:blue;text-align:center'>%s</td>"%data['rating_num'][i])
f.write("<tdstyle='color:red;text-align:center'>%s</td>"%data['range_num'][i])
#f.write("<tdstyle='color:blue;text-align:center'>%s</td>"%data['rating_people_num'][i])
f.write("<tdstyle='color:black;text-align:center'>%s</td>"%data['movie_author'][i])
f.write("</tr>")
f.write("</tbody>")f.write("</thead>")
f.write("</table>")
f.write("</body>")
f.write("</html>")
f.close()
if__name__=='__main__':
datas=[]
htmls=__getHtml()
foriinrange(len(htmls)):
data=__getData(htmls[i])
datas.append(data)
__getMovies(datas)4数据保存、展示结果如后图所示:5技术难点关键点数据爬取实战(搜房网爬取房屋数据)frombs4importBeautifulSoup
importrequests
rep=requests.get('/top/')
rep.encoding="gb2312"#设置编码方式
html=rep.text
soup=BeautifulSoup(html,'html.parser')
f=open('F://fang.html','w',encoding='utf-8')
f.write("<html>")
f.write("<head><metacharset='UTF-8'><title>Inserttitlehere</title></head>")
f.write("<body>")
f.write("<center><h1>新房成交TOP3</h1></center>")
f.write("<tableborder='1px'width='1000px'height='800px'align=center><tr>")
f.write("<th><h2>房址</h2></th>")
f.write("<th><h2>成交量</h2></th>")
f.write("<th><h2>均价</h2></th></tr>")
forliinsoup.find("ul",class_="ul02").find_all("li"):
name=li.find("div",class_=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年浙江大学医学院附属第一医院台州医院(筹)招聘高层次卫技人员68人笔试模拟试题及答案解析
- 吉水县园区开发建设有限公司及下属子公司2026年第一批面向社会公开招聘笔试备考题库及答案解析
- 2025年河北省定向招录选调生备考题库附答案
- 2025广东清远市清新区公益性岗位招聘14人备考题库附答案
- 2025年度河北工程大学附属医院公开招聘工作人员考试模拟卷附答案
- 2025广东云浮市新兴县人民法院招聘劳动合同制审判辅助人员2人考试参考题库附答案
- 2025年甘肃省张掖市金源电力工程有限责任公司供电服务分公司员工招聘备考题库附答案
- 2025年河北秦皇岛市北戴河医院选聘事业单位工作人员15名备考题库附答案
- 2025年湖南长沙市雨花区育新第二小学秋教师招聘考试模拟卷附答案
- 2026浙江温州市广播电视监测中心招聘编外合同制人员1人笔试参考题库及答案解析
- 殡仪馆鲜花采购投标方案
- 中小学生意外伤害防范
- 动静脉瘘课件
- 企业ESG审计体系构建-洞察及研究
- 2025年信用报告征信报告详版个人版模板样板(可编辑)
- 急诊科心肌梗死抢救流程
- 药品生产培训课件
- 《先张法预应力混凝土实心方桩技术规程》
- 贵州省县中新学校计划项目2024-2025学年高一上学期期中联考地理试题(解析版)
- 【2025年】天翼云解决方案架构师认证考试笔试卷库下(多选、判断题)含答案
- 绞吸船清淤施工方案
评论
0/150
提交评论