900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 安居客检测到网页抓取_python3爬虫实战-安居客写字楼信息 学会月入上万理所当然...

安居客检测到网页抓取_python3爬虫实战-安居客写字楼信息 学会月入上万理所当然...

时间:2023-10-21 03:43:29

相关推荐

安居客检测到网页抓取_python3爬虫实战-安居客写字楼信息 学会月入上万理所当然...

说起python爬虫,相信大家都觉得很神奇,为什么python爬虫叫做网络蜘蛛,对于这一点,相信大家一定觉得高大神奇,其实爬虫技术这个过程很无聊,但是获取到想要的结果的时候就很开心,那么今天大家就跟随我的脚步进入爬虫的技术领域,话不多说,我们头条号只讲干货!

那么今天就带领大家去爬取安居客这个网站的一些房产数据,今天我们爬取的是关于写字楼的六项数据,那么首先我会一步一步讲解程序的每一步实现的作用,最后会附上完整代码,大家可以拿去自己进行实验,不懂的地方欢迎下方留言或者私信我都可以,有时间就回复!

安居客北京写字楼六项数据爬取

安居客的北京写字楼链接:https://bj./xzl-zu/?from=navigation

具体的代码块以及每一块的作用会在下面详细说明:

# 输入相应的库文件# requests库用于对网站发送请求,请求成功网站会返回给我们一个响应值import requests# BeautifulSoup库从bs4模块导入,用于对网站的响应值进行解析from bs4 import BeautifulSoup# csv库用于把爬取的文件放进csv文件内import csv# time库有很多用法,这里是用来防止反爬机制import time# 由于网站信息页面有很多页数,我们这里设置爬取100页urls = ['https://bj./xzl-zu/p{}/'.format(number)for number in range(1, 101)]# 假如请求头,模拟浏览器登录请求,防止被封ip地址headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/' '537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'}# 打开名为:大北京.csv的文件,先给第一行加一些名字['标题', '地址', '日租价格', '月租价格', '楼层特点', '面积']with open('大北京.csv', 'a', newline='', encoding='utf-8-sig') as csvfile: w = csv.writer(csvfile) w.writerow(['标题', '地址', '日租价格', '月租价格', '楼层特点', '面积'])# 由于有很多页面,每一个页面都有相应的链接,这里设置循环按顺序爬取每一个网页for url in urls: # 对网站发送请求 wb_data = requests.get(url, headers=headers) # 对返回的响应体进行解析 soup = BeautifulSoup(wb_data.text, "lxml") # 用select函数抽取需要的内容,单击需要的内容》检查》copy select titles = soup.select("#list-content > div > dl > dt > span") # 在解析后的文档中查找标题 addresses = soup.select("#list-content > div > dl > dd.address > span:nth-child(2)") # 地址 dprices = soup.select("#list-content > div > div.item-price > div.price-a > em") # 日租价格 mprices = soup.select("#list-content > div > div.item-price > div.price-b > em") # 月租价格 lous = soup.select("#list-content > div > dl > dd:nth-child(2) > span:nth-child(3)") # 楼层属性 areas = soup.select("#list-content > div > dl > dd:nth-child(2) > span:nth-child(1)") # 面积大小 # 进一步获取我们想要的数据 for title, address, dprice, area, lou, mprice in zip(titles, addresses, dprices, areas, lous, mprices): # 建立空列表,分配存储地址 data = [] dprice = dprice.text, # 价格直接获取里面的文本就可以,两边是标签 dprice = dprice[0]+"元/m²•天" mprice = mprice.text, # 价格直接获取里面的文本就可以,两边是标签 mprice = mprice[0]+"元/月" title = title.text.strip(), # 获得文本并去除掉文本两侧的不必要的字符,用strip() title = title[0] address = address.text.strip('[]') # 同样地址也是去除两头不必要的字符串 area = area.text.strip("平米"), area = area[0]+"m²" # 获取面积 lou = lou.text, data = [title, address, dprice, mprice, lou, area] # 将以上数据放入列表中打印在命令框 print(data) # 打开文件大北京.csv,并循环地将数据写入其中,with open是自动关闭的函数 with open('大北京.csv', 'a', newline='', encoding='utf-8-sig') as csvfile: w = csv.writer(csvfile) w.writerow(data) time.sleep(5)

以上就是所有的代码块,最终会保存在本地文档的.csv文件里面,文字繁多,一个人打字比较操劳,如果有可能我会开直播给大家教学,谢谢支持与关注,您的支持与关注是我进行下去的动力!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。