import gevent
from gevent import monkey
monkey.patch_all()
from gevent.queue import Queue
import time
import os
import requests
import re start = time.perf_counter()
work = Queue()
# for i in range(1,101):
# url = f'https://sh.fang.lianjia.com/loupan/pg{i}/'
# print(url)
# work.put_nowait(url)
url = 'https://sh.fang.lianjia.com/loupan/pg{}/'
url_list = (url.format(i) for i in range(1,101))
[work.put_nowait(url) for url in url_list] info_set = set() def spider():
while not work.empty():
url = work.get_nowait()
res = requests.get(url).text
title = re.findall('<a href="/loup.*?itle="(.*?)"'
'.*?<div class="resb.*?<span>(.*?)</span>'
'.*?<span>(.*?)</span>'
'.*?<span class="number">(.*?)</span>'
'.*?<span class="desc">&nbsp;(.*?)</span>',res,re.S) for i in title:
info_set.add(i) tasks = [] for x in range(200):
task = gevent.spawn(spider)
tasks.append(task)
gevent.joinall(tasks,timeout=6) for i,n in enumerate(info_set): title = f'标题: {n[0]}'
addr = f'地区: {n[1]}{n[2]}'
price = f'价格: {n[3]}{n[4]}'
print(f"""
{i}
{title}
{addr}
{price}
""") with open('./lianjie.cvs','a',encoding='utf-8') as f:
f.writelines([title,addr,price,'\n'])
print('写入完成') print(time.perf_counter()-start)

最新文章

  1. 关于oracle的准备
  2. 字符串去空格 java , js和Jquery 方法
  3. Socket重叠IO
  4. 分批次从musql取数据,每次取1000条
  5. 开发工具 之 PowerDesigner
  6. Chrome的隐身模式
  7. gcc编译参数-fPIC问题 `a local symbol&#39; can not be used when making a shared object;
  8. .Net程序员关于微信公众平台测试账户配置 项目总结
  9. LR实战之Discuz开源论坛——登录脚本检查点
  10. 老李分享:为何要使用 Web Services
  11. 使用SVG基本操作API
  12. Hibernate学习(二)关系映射----基于外键的单向一对一
  13. C# json转model 以及model转json
  14. [ilink32 Error] Fatal: Unable to open file &#39;DATA.DBXMSSQLMETADATAREADER.OBJ&#39;
  15. java中变量使用的总结
  16. 二级域名 cookie session 共享
  17. Elasticsearch5.0 安装问题
  18. 【转】C# Async/Await 异步编程中的最佳做法
  19. tensorflow命令行参数:tf.app.flags.DEFINE_string、tf.app.flags.DEFINE_integer、tf.app.flags.DEFINE_boolean
  20. Python基础 - 总则

热门文章

  1. mybatis随记
  2. APIView中的dispatch
  3. 云小课 | 搬迁本地数据至OBS,多种方式任你选
  4. Lodash工具库中cloneDeep深拷贝的使用
  5. redis配置文件.conf和常用配置
  6. (三)vue数据绑定及相应的命令
  7. rancher证书过期
  8. DQN(Deep Q-learning)入门教程(三)之蒙特卡罗法算法与Q-learning算法
  9. template标签介绍和使用
  10. C# 数据操作系列 - 19 FreeSql 入坑介绍