一、主题式网络爬虫设计方案(15分)

1.主题式网络爬虫名称

名称:爬取58同城泉州区域的房屋交易信息

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

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

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

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

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

二、主题页面的结构特征分析(15分)

1.主题页面的结构特征

 

 

 

2.Htmls页面解析

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

 

 

 

 

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

 

 

 

遍历:for循环嵌套

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

1.数据爬取与采集

 

 

 

 

 

2.对数据进行处理

 

 

 

 提取数据

 

 

 

 数据持久

 

 

 

 

 

 

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

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.经过对主题数据的分析与可视化,可以得到哪些结论?

通过Python可以获取自己想要的数据,然后保存在本地,可以提高效率。

2.对本次程序设计任务完成的情况做一个简单的小结。

通过这次任务,学会使用python,很方便。

 

版权声明:本文为Vince777原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Vince777/p/12705545.html