Python⼿拉⼿教你爬取贝壳房源数据的实战教程
⽬录
⼀、爬⾍是什么?
⼆、使⽤步骤
1.引⼊库
2.读⼊数据
3.随机选择⼀个ip地址构建代理服务器
4.运⾏代码
总结
⼀、爬⾍是什么?
在进⾏⼤数据分析或者进⾏数据挖掘的时候,数据源可以从某些提供数据统计的⽹站获得,也可以从某
些⽂献或内部资料中获得,但是这些获得数据的⽅式,有时很难满⾜我们对数据的需求,⽽⼿动从互联⽹中去寻这些数据,则耗费的精⼒过⼤。此时就可以
利⽤爬⾍技术,⾃动地从互联⽹中获取我们感兴趣的数据内容,并将这些数据内容爬取回来,作为我们的数据源,从⽽进⾏更深层
次的数据分析,并获得更多有价值的信息。在使⽤爬⾍前⾸先要了解爬⾍所需的库(requests)或者( quest ),该库是为了
爬取数据任务⽽创建的。
⼆、使⽤步骤
1.引⼊库
代码如下(⽰例):
import os
quest
import random
import time
class BeikeSpider:
def __init__(self, save_path="./beike"):
"""
贝壳爬⾍构造函数
:param save_path: ⽹页保存⽬录
"""
2.读⼊数据
代码如下:
# ⽹址模式
self.url_mode = "{}.fang.ke/loupan/pg{}/"
# 需爬取的城市
self.cities = ["cd", "sh", "bj"]
# 每个城市爬取的页数
# 让爬⾍程序随机休眠5-10秒
self.sleep = (5, 10)
# ⽹页下载保存根⽬录
self.save_path = save_path
# 设置⽤户代理,是爬⾍程序伪装成浏览器
self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36"} # 代理IP的信息
self.proxies = [
{"https": "123.163.67.50:8118"},
python 爬虫教学{"https": "58.56.149.198:53281"},
{"https": "14.115.186.161:8118"}
]
# 创建保存⽬录
if not ists(self.save_path):
os.makedirs(self.save_path)
def crawl(self):
"""
执⾏爬取任务
:
return: None
"""
该处使⽤的url⽹络请求的数据。
3.随机选择⼀个ip地址构建代理服务器
for city in self.cities:
print("正在爬取的城市:", city)
# 每个城市的⽹页⽤单独的⽬录存放
path = os.path.join(self.save_path, city)
if not ists(path):
os.makedirs(path)
for page in range(1, al_pages+1):
# 构建完整的url
url = self.url_mode.format(city, page)
# 构建Request对象, 将url和请求头放⼊对象中
request = quest.Request(url, headers=self.headers)
# 随机选择⼀个代理IP
proxy = random.choice(self.proxies)
# 构建代理服务器处理器
proxy_handler = quest.ProxyHandler(proxy)
# 构建opener
opener = quest.build_opener(proxy_handler)
# 使⽤构建的opener打开⽹页
response = opener.open(request)
html = ad().decode("utf-8")
# ⽹页保存⽂件名(包含路径)
filename = os.path.join(path, str(page)+".html")
# 保存⽹页
self.save(html, filename)
print("第%d页保存成功!" % page)
# 随机休眠
sleep_time = random.randint(self.sleep[0], self.sleep[1])
time.sleep(sleep_time)
该处除随机选择ip地址以外还会限制爬取数据的速度,避免暴⼒爬取。
4.运⾏代码
def save(self, html, filename):
"""
保存下载的⽹页
:param html: ⽹页内容
:param filename: 保存的⽂件名
:return:
"""
f = open(filename, 'w', encoding="utf-8")
f.write(html)
f.close()
def parse(self):
"""
解析⽹页数据
:return:
"""
pass
if __name__ == "__main__":
spider = BeikeSpider()
运⾏结果就会这样,会保存在你的⽂件夹中。
总结
这⾥对⽂章进⾏总结:今天分析这波代码⽬的是为了让⼤家清晰明亮的了解python爬⾍的运作,和⼤家⼀起学习
以上就是今天要讲的内容,本⽂仅仅简单介绍了pandas的使⽤,⽽quest提供了⼤量能使我们快速便捷地爬取数据。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论