首先我们还是要掏出我们不变的秘诀:
爬虫四步:
1、明确目标url
2、发起请求 获取响应
3、响应里面取出数据
4、存储数据
一、明确目标url
打开链家的网页
这里用北京的二手房为例
因为我们要获取多页数据所以我们点击f12然后去请求第二页
看看我们能不能拿到51页的数据。
发现成功了
所以我们的目标url确定了翻页参数为pg
掏出我们祖上传下的传家模板写出我们的翻页并且看看我们能不能获取响应
from requests_html import HTMLSession
class Spider:
def __init__(self):
self.url = 'https://bj.lianjia.com/ershoufang/pg{}/'
self.session = HTMLSession()
def get_html(self):
for page in range(1, 101):
next_url = self.url.format(page)
response = self.session.get(url=next_url)
print(response.text)
def parse(self, response):
pass
def run(self):
self.get_html()
if __name__ == '__main__':
spider = Spider()
spider.run()
发现成功了!
那我们第一步和第二步已经成功了!
那我们开始取数据吧(这里用xpath简单方便)
首先我们定位第一个房屋信息
写出它的xpath以后循环它并且在这个基础上进行进一步的筛选
tree = etree.HTML(response.text)
for li in tree.xpath('//ul[@class="sellListContent"]/li'):
print(li)
发现我们已经成功定位到了这个数据那我们进一步去取数据吧!(这里我们取详情页的url,房名,价格,还有简介)
def parse(self, response):
tree = etree.HTML(response.text)
for div in tree.xpath('//ul[@class="sellListContent"]/li'):
# print(div)
detail_url = div.xpath('./div/div/a/@href')[0]
detail_title = div.xpath('./div[1]/div[1]/a/text()')[0]
detail_price = div.xpath('./div[1]/div[6]/div[1]/span/text()')[0]
detail_introduction = div.xpath('./div[1]/div[3]/div/text()')[0]
打印一下他们发现可以取到!!
ヾ(✿゚▽゚)ノ那我们开始最后一步存数据啦!!!
再掏出我们的存Excel的模板代码!
改一个表头然后我们运行一下吧
# # 一个工作簿创建一张表模板代码
def SaveExcel(self, data):
# 创建保存excel表格的文件夹
# os.getcwd() 获取当前文件路径
os_mkdir_path = os.getcwd() + '/链家/'
# 判断这个路径是否存在,不存在就创建
if not os.path.exists(os_mkdir_path):
os.mkdir(os_mkdir_path)
# 判断excel表格是否存在 工作簿文件名称
os_excel_path = os_mkdir_path + '链家.xls'
if not os.path.exists(os_excel_path):
# 不存在,创建工作簿(也就是创建excel表格)
workbook = xlwt.Workbook(encoding='utf-8')
"""工作簿中创建新的sheet表""" # 设置表名
worksheet1 = workbook.add_sheet("链家", cell_overwrite_ok=True)
"""设置sheet表的表头"""
sheet1_headers = ('房名', '价格', '简介', '详情页url')
# 将表头写入工作簿
for header_num in range(0, len(sheet1_headers)):
# 设置表格长度
worksheet1.col(header_num).width = 2560 * 3
# 写入 行, 列, 内容
worksheet1.write(0, header_num, sheet1_headers[header_num])
# 循环结束,代表表头写入完成,保存工作簿
workbook.save(os_excel_path)
# 判断工作簿是否存在
if os.path.exists(os_excel_path):
# 打开工作簿
workbook = xlrd.open_workbook(os_excel_path)
# 获取工作薄中所有表的个数
sheets = workbook.sheet_names()
for i in range(len(sheets)):
for name in data.keys():
worksheet = workbook.sheet_by_name(sheets[i])
# 获取工作薄中所有表中的表名与数据名对比
if worksheet.name == name:
# 获取表中已存在的行数
rows_old = worksheet.nrows
# 将xlrd对象拷贝转化为xlwt对象
new_workbook = copy(workbook)
# 获取转化后的工作薄中的第i张表
new_worksheet = new_workbook.get_sheet(i)
for num in range(0, len(data[name])):
new_worksheet.write(rows_old, num, data[name][num])
new_workbook.save(os_excel_path)
打开我们的Excel表格看看吧
好耶成功啦!!!
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
朋友们如果需要这份完整的资料可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
![](https://i-blog.csdnimg.cn/blog_migrate/ea36696e89b97bda53f100482ef70ad1.png)
一、Python学习大纲
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
三、入门学习视频
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、python副业兼职与全职路线
👉[[CSDN大礼包:《python兼职资源&全套学习资料》免费分享]](安全链接,放心点击)