一、主题式网络爬虫设计方案(15分)
1.主题式网络爬虫名称
名称:爬取爱彼迎订房者评论信息
2.主题式网络爬虫爬取的内容与数据特征分析
本次爬虫主要爬取爱彼迎订房者相关信息
3.主题式网络爬虫设计方案概述(包括实现思路与技术难点)
本次设计方案主要使用request库和beautifulSoup库对网站访问,最后以”TXT“格式将数据保存在本地。
技术难点主要包括对爱彼迎页面的分析和采集。
二、主题页面的结构特征分析(15分)
例:airbnb.cn/users/show/85276582
可以分析一下页面。F12打开控制台调试,
class = "_1ekkhy94" 对应的div容器有用户名
以此类推可以找到其他关键点
还可以通过用户头像这里(class="_1mgxxu3"),不仅可以获得头像图片的文件地址(src),也可以在这里获得用户名称(title/alt)
三、网络爬虫程序设计(60分)
爬虫程序主体要包括以下各部分,要附源代码及较详细注释,并在每部分程序后面提供输出结果的截图。
读取网页:
直接使用request库访问页面,获取网页数据
分析数据:
用beautifulSoup库分析html页面寻找之前找到的class点,获取我需要的信息
保存数据:
首先创建一个user.txt文件用于存储,代码作用为:
打开文件流,循环写入用户名称、用户头像文件地址、用户评论数、用户实名状态等,最后关闭文件流保存数据
完整程序代码:
1 import requests
2 from bs4 import BeautifulSoup 3 4 def getinfo(url): 5 try: 6 r = requests.get(url) 7 r.raise_for_status() 8 return r.text 9 except: 10 return "error" 11 12 13 def userinfo(html): 14 soup = BeautifulSoup(html, "html.parser") 15 title = soup.select("img._1mgxxu3") 16 user_name = title[0].get('title') 17 print("user:" + user_name) 18 user_img = title[0].get('src') 19 print("avatar:" + user_img) 20 reg_time = soup.select("div._11dqbld7") 21 user_c = reg_time[0].get_text() 22 print("talk:" + user_c) 23 user_auth = reg_time[1].get_text() 24 print("auth:" + user_auth) 25 zhu = soup.select("span._1nmdbudj") 26 for i in zhu: 27 print(i.get_text()) 28 #保存数据 29 fo = open("user.txt", "w+") 30 fo.writelines(user_name + "\n") 31 fo.writelines(user_img + "\n") 32 fo.writelines(user_c + "\n") 33 fo.writelines(user_auth + "\n") 34 for i in zhu: 35 fo.writelines(i.get_text() + "\n") 36 fo.close() 37 38 39 40 # def main(): 41 html = getinfo("https://www.airbnb.cn/users/show/85276582") 42 userinfo(html)
运行结果:
保存的数据文件:
四、结论(10分)
1.经过对主题数据的分析与可视化,可以得到哪些结论?
通过python可以快速获取自己想要的数据并保存在本地,可以节省很多工作量,提高效率。
2.对本次程序设计任务完成的情况做一个简单的小结。
通过这次任务,学会使用python获取自己需要的数据并且保存下来,很方便。