码迷,mamicode.com
首页 > 编程语言 > 详细

Python高级应用程序设计任务

时间:2019-12-21 12:03:51      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:tps   详细   获取   函数   结果   com   柱形图   解析   网页数据   

Python高级应用程序设计任务要求

 

用Python实现一个面向主题的网络爬虫程序,并完成以下内容:
(注:每人一题,主题内容自选,所有设计内容与源代码需提交到博客园平台)

一、主题式网络爬虫设计方案(15分)
1.主题式网络爬虫名称
 
名称:爬取58同城房产租售信息

2.主题式网络爬虫爬取的内容与数据特征分析

这次爬虫主要是爬取58同城泉州区域的房屋交易价格和房屋信息。


3.主题式网络爬虫设计方案概述(包括实现思路与技术难点)
 

实现思路:获取58同城目标的HTML页面,使用requests爬取数据BeautifulSoup解析页面,使用records进行数据存储、读取,最后打印出来数据

技术难点:爬取数据,遍历标签属性。存储数据表格信息

 
 
二、主题页面的结构特征分析(15分)
1.主题页面的结构特征
技术图片技术图片

 

 

 

 


2.Htmls页面解析

 

用鼠标右键点击查看“查看元素”选项或者按“F12”

技术图片

 

 


 


3.节点(标签)查找方法与遍历方法
(必要时画出节点树结构)
 

查找:select函数

技术图片

 

 

遍历:for循环嵌套


三、网络爬虫程序设计(60分)
爬虫程序主体要包括以下各部分,要附源代码及较详细注释,并在每部分程序后面提供输出结果的截图。
1.数据爬取与采集
技术图片

 

 技术图片

 

 


2.对数据进行清洗和处理
技术图片

 

 技术图片

 

 

 


3.文本分析(可选):jieba分词、wordcloud可视化
4.数据分析与可视化
(例如:数据柱形图、直方图、散点图、盒图、分布图、数据回归分析等)

 技术图片

 

 

技术图片

 

 


 5.数据持久化
技术图片

 

 技术图片

 

 技术图片

 

 

 6.附完整程序代码
 
import requests

from bs4 import BeautifulSoup

import records

 

 

def getHtml(url):

    ‘‘‘

    获取目标网页数据

    ‘‘‘

    try:

        # 伪装UA

        ua = {‘user-agent‘: ‘Mozilla/5.0 Chrome/79.0.3945.88 Safari/537.36‘}

        # 读取网页

        r = requests.get(url, headers=ua)

        # 获取状态

        r.raise_for_status()

        # 打印数据 print(r.text)

        # 返回数据

        return r.text

    except:

        return "Fail"

 

 

def parseHtml(html):

    ‘‘‘

    房屋数据收集

    ‘‘‘

    # 数据数组

    data = []

    # 结构解析

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

    # 获取具体房屋的链接

    titles = soup.select(‘.title a‘)

    print(titles)

    # for循环解析链接

    for i in titles:

        # 解析href链接属性

        a = i.get(‘href‘)

        # 打印数据 print(a)

        # 加入数组

        data.append(a)

    # 返回数组

    return data

 

 

def parseInfo(html):

    ‘‘‘

    房屋数据清洗

    ‘‘‘

    # 创建字典

    j = {}

    # 结构解析

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

    # 获取房屋标题

    titles = soup.select(‘.f20‘)[0].get_text()

    # 获取房屋价格

    price = soup.select(‘.house-basic-info .price‘)[0].get_text()

    # 获取房屋户型

    huxing = soup.select(‘.house-basic-info .room .main‘)[0].get_text()

    # 获取房屋楼层

    louceng = soup.select(‘.house-basic-info .room .sub‘)[0].get_text()

    # 获取房屋面积

    mianji = soup.select(‘.house-basic-info .area .main‘)[0].get_text()

    # 获取房屋装修

    maopi = soup.select(‘.house-basic-info .area .sub‘)[0].get_text()

    # 获取联系电话

    phone = soup.select(‘.phone-num‘)[0].get_text()

    # 组合数据

    sj = ‘标题:%s 价格:%s 户型:%s 楼层:%s 面积:%s 装修:%s 联系方式:%s ‘%(titles,price,huxing,louceng,mianji,maopi,phone)

    # 打印数据

    print(sj)

    # 字典

    j[‘标题‘] = titles

    j[‘价格‘] = price

    j[‘户型‘] = huxing

    j[‘楼层‘] = louceng

    j[‘面积‘] = mianji

    j[‘装修‘] = maopi

    j[‘联系‘] = phone

    # 返回字典

    return j

 

 

# 采集

urls = parseHtml(getHtml(‘https://qz.58.com/ershoufang/pn1/‘))

# 数组

data = []

# 循环

for i in urls:

    # 房屋数据清洗

    sj = parseInfo(getHtml(i))

    # 打印数据 print(sj)

    # 加入成员

    data.append(sj)

# 数据保存

results = records.RecordCollection(iter(data))

with open(‘house.xlsx‘, ‘wb‘) as f:

    # 写入

    f.write(results.export(‘xlsx‘))

  

 

四、结论(10分)
1.经过对主题数据的分析与可视化,可以得到哪些结论?
  可以很直观的找到心仪的租房户型,位置,价格,面积。
2.对本次程序设计任务完成的情况做一个简单的小结。
  首先思路要清晰,不然很容易卡着,做完这步,不懂下步怎么做;其次,通过使用requests爬取数据,BeautifulSoup解析页面......让我对爬虫的认识又深刻了,对它更加“熟悉”了。同时,又巩固了之前所学的知识;最后,我觉得,学习爬虫真的很值,可以很直观,很快速的,帮你把你想要的数据提取出来。节省了我们大量的时间。
 

 

Python高级应用程序设计任务

标签:tps   详细   获取   函数   结果   com   柱形图   解析   网页数据   

原文地址:https://www.cnblogs.com/chenxinyuy/p/12076156.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!