链家网开源java_异步协程爬取链家租房信息
异步协程抓取链家数据+pandas写入csv
import asyncio
import aiohttp
import pandas
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
class LJSpider(object):
def __init__(self):
self._ua = UserAgent()
self._headers = {"User-Agent": self._ua.random}
self._data_list = []
async def get(self,url):
"""
aiohttp异步协程 发出请求并返回response
:param url:
:return:
"""
async with aiohttp.ClientSession() as session:
try:
async with session.get(url,headers = self._headers,timeout = 3) as response:
if response.status == 200:
return await response.text()
except Exception as e:
print(e)
async def parse(self):
for i in range(0,6):
url = 'https://bj.lianjia.com/zufang/pg{}'.format(i)
resp = await self.get(url)
# 数据解析
self.parse_details(resp)
# print(resp)
#数据存储
data = pandas.DataFrame(self._data_list)
data.to_csv("链家网租房数据.csv", encoding='utf_8_sig')
def parse_details(self,resp):
bs = BeautifulSoup(resp, 'html.parser')
bs_list = bs.find_all('div',attrs={'class':'content__list--item'})
for i in range(0,len(bs_list)):
data=bs_list[i]
# 标题
title = data.find('a',attrs={'class':'twoline'}).text
# 租金
price = data.find('span',attrs={'class':'content__list--item-price'}).text
#描述信息
des_list = data.find('p',attrs={'class':'content__list--item--des'}).text.split('/')
part = self.delete_space(des_list[0])
area = self.delete_space(des_list[1])
direction = self.delete_space(des_list[2])
house_type = self.delete_space(des_list[3])
storey = self.delete_space(des_list[4])
# 房源类型
owner = data.find('i',attrs={'class':'content__item__tag--owner_reco'})
owner_reco = owner.text if owner else''
print('房源类型:',owner_reco)
#供暖类型
central = data.find('i',attrs={'class':'content__item__tag--central_heating'})
central_h = central.text if central else ''
# 标签
tag = data.find('p', attrs={'class': 'content__list--item--bottom oneline'})
tag_has = tag.text if tag else ''
# 信息来源
brand = data.find('span',attrs={'class':'brand'}).text
# 维护时间
time_onl = data.find('span',attrs={'class':'content__list--item--time oneline'}).text
one_data = {
"title": self.delete_space(title),
"price": self.delete_space(price),
'tag_has': self.delete_space(tag_has),
'part' :part,
'area': area,
'direction':direction,
"house_type" :house_type,
'storey': storey,
"owner_reco": self.delete_space(owner_reco),
"central_h": self.delete_space(central_h),
"brand": self.delete_space(brand),
"time_onl": self.delete_space(time_onl),
}
print('房源信息。。。。。:', one_data)
self._data_list.append(one_data) # 添加数据
def delete_space(self,str = ''):
"数据清洗"
str = str.replace('\n',' ').replace(' ','').lstrip().rstrip()
return str
def run(self):
loop = asyncio.get_event_loop()
tasks = [asyncio.ensure_future(self.parse())]
loop.run_until_complete(asyncio.wait(tasks))
if __name__ == '__main__':
l = LJSpider()
l.run()
链家网开源java_异步协程爬取链家租房信息相关推荐
- Python分别用单线程,多线程,异步协程爬取一部小说,最快仅需要5s
文章目录 单线程爬取 多线程爬取 异步协程爬取 本文运用了三种方式爬取一整部小说,分别运用了单线程爬取,多线程爬取和异步协程爬取. 小说网址:` http://www.doupo321.com/dou ...
- Python爬虫——aiohttp异步协程爬取同程旅行酒店评论
大家好!我是霖hero Python并发编程有三种方式:多线程(Threading).多进程(Process).协程(Coroutine),使用并发编程会大大提高程序的效率,今天我们将学习如何选择多线 ...
- 送书 | aiohttp异步协程爬取同程旅行酒店评论并作词云图
大家好!我是啃书君! Python并发编程有三种方式:多线程(Threading).多进程(Process).协程(Coroutine),使用并发编程会大大提高程序的效率,今天我们将学习如何选择多线程 ...
- python异步协程爬取百度小说之西游记
爬虫百度小说之西游记 参考文章链接:https://blog.csdn.net/weixin_45788900/article/details/119539952 一.百度小说之西游记网址:小说网址 ...
- python爬虫 asyncio aiohttp aiofiles 单线程多任务异步协程爬取图片
python爬虫 asyncio aiohttp aiofiles 多任务异步协程爬取图片 main.py """=== coding: UTF8 ==="&q ...
- 利用协程爬取m3u8视频
利用协程爬取m3u8视频 在进行了爬虫的相关学习之后,自己尝试爬取了一些视频,但动辄ts文件就几百个,单线程伤不起那时间,一个一个等实在太慢了,想利用多线程,查看相关资料,又说python是假的多 ...
- python从网址爬图片协程_Python爬虫多任务协程爬取虎牙MM图片
查看: 4420|回复: 241 [作品展示] Python爬虫多任务协程爬取虎牙MM图片 电梯直达 发表于 2019-4-17 21:35:47 | 只看该作者 |倒序浏览 |阅读模式 马上注册,结 ...
- python爬取链家新房数据_Python爬虫实战:爬取链家网二手房数据
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 买房装修,是每个人都要经历的重要事情之一.相对于新房交易市场来说,如今的二手房交易市场一点也 ...
- python爬取链家房价消息_Python的scrapy之爬取链家网房价信息并保存到本地
因为有在北京租房的打算,于是上网浏览了一下链家网站的房价,想将他们爬取下来,并保存到本地. 先看链家网的源码..房价信息 都保存在 ul 下的li 里面 爬虫结构: 其中封装了一个数据库处理模 ...
最新文章
- 传统程序员如何学习机器智能?阿里公开11个经典实战案例
- java 常量区存放 new_java常量池与对象存储
- 通过 Docker Compose 组合 ASP NET Core 和 SQL Server
- 《走遍中国》珍藏版(十二)
- lean软件Android有吗,leanchat-android
- 使用R完成决策树分类
- 从win到linux的小问题集锦(不断更新中)
- chrome中如何下载文本文件(不是直接打开)
- CAD - 多段线、矩形、修订云线、样条曲线
- su 无法切换账户(密码正确)一直提示Authentication failure(认证失败)
- 景点门票销售系统系统java_《基于WEB的景点门票销售系统》.doc
- ERP系统更改颜色操作步骤
- Sql有条件的插入语句
- Python实现和弦查询器(钢琴)
- Easy EDA #学习笔记08# | 创建元件库(原理图库与PCB封装库)
- 计算机英语期末考,《计算机英语》期末考试试卷.doc
- Vue 3的设计过程(翻译自尤雨溪原文)
- 拉开你和同龄人差距的100个顶级认知
- Java 替换中文括号小括号,或者英文括号
- excel计算式自动计算_钢筋翻样搞不定?图文讲义+自动计算excel表格,高效更省心...