文档库 最新最全的文档下载
当前位置:文档库 › Python网络爬虫实习报告

Python网络爬虫实习报告

Python网络爬虫实习报告
Python网络爬虫实习报告

Python网络爬虫实习报告

目录

一、选题背景.................................................................................... - 2 -

二、爬虫原理.................................................................................... - 2 -

三、爬虫历史和分类......................................................................... - 2 -

四、常用爬虫框架比较..................................................................... - 2 -

五、数据爬取实战(豆瓣网爬取电影数据)................................... - 3 -1分析网页 .. (3)

2爬取数据 (3)

3数据整理、转换 (4)

4数据保存、展示 (9)

5技术难点关键点 (10)

六、总结 ......................................................................................... - 13 -

一、选题背景

二、爬虫原理

三、爬虫历史和分类

四、常用爬虫框架比较

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 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko)

Chrome/23.0.1271.64 Safari/537.11',

# 'Referer':None #注意如果依然不能抓取的话,这里可以设置抓取网站的host

# }

# opener = urllib.request.build_opener()

# opener.addheaders = [headers]

url = "https://https://www.wendangku.net/doc/525688209.html,/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)

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", 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")

#for x in range(len(spans)):

# if x <= 2:

# pass

# else:

#

rating_people_num.append(spans[x].string[-len(spans[x].stri ng):-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

return data

3数据整理、转换

def __getMovies(data):

f = open('F://douban_movie.html', 'w',encoding='utf-8') 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("

style='color:orange;text-align:center'>%s" % data['title'][i])

# f.write("

style='color:blue;text-align:center'>%s" % data['rating_num'][i])

f.write("

style='color:red;text-align:center'>%s" % data['range_num'][i])

# f.write("

style='color:blue;text-align:center'>%s" % data['rating_people_num'][i])

f.write("

style='color:black;text-align:center'>%s" % data['movie_author'][i])

f.write("

")

f.write("

")

f.write("")

f.write("

电影

评分排名评价人数导演

")

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('https://www.wendangku.net/doc/525688209.html,/top/') rep.encoding = "gb2312" # 设置编码方式

html = rep.text

soup = BeautifulSoup(html, 'html.parser')

f = open('F://fang.html', '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("

房址

成交量

均价

%s%s%s
")

f.write("")

六、总结

教师评语:

成绩:指导教师:

相关文档