您的当前位置:首页正文

Python网络爬虫实习报告

2022-12-14 来源:星星旅游


Python网络爬虫实习

报告

文档编制序号:[KK8UY-LL9IO69-TTO6M3-MTOL89-FTT688]

Python网络爬虫实习报告

目录

一、 选题背景 二、 爬虫原理 三、 爬虫历史和分类 四、 常用爬虫框架比较

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): # 'Referer':None #注意如果依然不能抓取的话,这里可以设置抓取网站的host # } # opener.addheaders = [headers]

pageSize += 25 pageNum += 1

print(pageSize, pageNum) except Exception as e: raise e return data 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\ #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\ 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数据整理、转换 def __getMovies(data):

f.write(\"\")

f.write(\"Insert title here\") f.write(\"\")

f.write(\"

爬取豆瓣电影

\") f.write(\"

作者:刘文斌

\")

f.write(\"

时间:\" + nowtime + \"

\") f.write(\"
\")

f.write(\"

\") 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(\"

\" % data['title'][i])

# f.write(\"

\" % data['rating_num'][i]) f.write(\"\" % data['range_num'][i])

# f.write(\"

\" % data['rating_people_num'][i]) f.write(\"\" % data['movie_author'][i])

f.write(\"

\") f.write(\"\") f.write(\"\") f.write(\"
电影评分排名

评价人数导演
%s%s%s%s%s
\") f.write(\"\") f.write(\"\") f.close()

if __name__ == '__main__':

datas = []

htmls = __getHtml()

for i in range(len(htmls)): data = __getData(htmls[i]) datas.append(data) __getMovies(datas)

4数据保存、展示 结果如后图所示: 5技术难点关键点

数据爬取实战(搜房网爬取房屋数据) from bs4 import BeautifulSoup import requests rep = requests.get()

rep.encoding = \"gb2312\" # 设置编码方式 html = rep.text

soup = BeautifulSoup(html, 'html.parser') f = open(, 'w',encoding='utf-8') f.write(\"\")

f.write(\"Insert title here\") f.write(\"\")

f.write(\"

新房成交TOP3

\")

f.write(\"

\")

f.write(\"

\") f.write(\"\") f.write(\"\")

for li in soup.find(\"ul\",class_=\"ul02\").find_all(\"li\"):

name=li.find(\"div\",class_=\"pbtext\").find(\"p\").text chengjiaoliang=li.find(\"span\",class_=\"red-f3\").text try:

junjia=li.find(\"div\",class_=\"ohter\").find(\"p\",class_=\"gray-9\")#.text.replace('?O', '平方米') except Exception as e:

junjia=li.find(\"div\",class_=\"gray-9\")#.text.replace('?O', '平方米') f.write(\"

\" % name)

f.write(\"

\" % chengjiaoliang)

f.write(\"

\" % junjia) print(name)

f.write(\"

房址

成交量

均价

color=red>%s%s%s
\") f.write(\"\")

六、总结 教师评语:

成绩: 指导教

师:

因篇幅问题不能全部显示,请点此查看更多更全内容