import requests,re,openpyxl,os

headers = {

'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36',

}

def crawing(page):

'''爬取指定页数的信息'''

try:

print('正在爬取第'+page+'页信息...')

url = 'http://bj.58.com/dashanzi/chuzu/pn'+page+'/?ClickID=1'

res = requests.get(url,headers=headers)

html = res.content.decode('utf-8')

except Exception as err:

print("爬取失败,原因是:"+str(err))

#定义查找标题、图片、户型、价格的正则表达式

title_pat='

.*?(.*?) '

pic_pat = 'lazy_src="(.*?)"'

room_pat = '

(.*?)     (.*?)

'

price_pat = '

.*?(.*?)'

print("获取标题信息...")

title_list=re.compile(title_pat,re.S).findall(html)

print("获取图片信息...")

pic_list=re.compile(pic_pat,re.S).findall(html)

print("获取户型信息...")

room_list=re.compile(room_pat,re.S).findall(html)

print("获取价格信息...")

price_list=re.compile(price_pat,re.S).findall(html)

data_list = []

for i in range(len(title_list)):

i_list = title,pic,room,price = title_list[i].strip(),pic_list[i],room_list[i][0] +' - ' + room_list[i][1],price_list[i]+'元/月'

data_list.append(i_list)

print("开始保存图片...")

save_pic(data_list,page)

print("所有图片已保存在当前目录下的58同城租房信息图片文件夹内")

print("开始保存信息表格文件...")

save_file(data_list,page)

print("当前页租房信息已保存在当前目录下的表格文件内")

print("爬取完毕,所有信息及图片已成功保存")

def save_pic(list,page):

'''保存图片'''

target = ['|',':','*','?','/','\\','','"']

#创建文件夹

if not os.path.exists('./58同城租房信息图片 - 第'+page+'页'):

os.makedirs('./58同城租房信息图片 - 第'+page+'页')

#循环取出图片地址保存

for i in range(len(list)):

try:

res = requests.get(list[i][1])

#判断文件名内是否有非法字符,并替换

title = list[i][0]

for j in target:

if j in title:

title = title.replace(j,'')

with open('./58同城租房信息图片 - 第'+page+'页'+"/"+title+".png","wb") as file:

print("正在保存第"+str(i+1)+"张图片...")

file.write(res.content)

except Exception as err:

print("保存失败,原因是:"+str(err))

def save_file(list,page):

'''保存信息表格'''

try:

wb = openpyxl.Workbook()

ws = wb.active

title = ['标题','图片链接','户型','价格']

ws.append(title)

for i in range(len(list)):

print('正在保存第'+str(i+1)+'条信息...')

ws.append(list[i])

wb.save('./58同城房屋出租信息 - 第'+page+'页.xlsx')

except Exception as err:

print("保存失败,原因是:"+str(err))

if __name__ == '__main__':

print("58同城租房信息爬取 - 广州")

while True:

page=input("请输入要爬取的信息页数(1~70),输入q退出:")

if page=='q':

break

else:

crawing(page)

一键复制

编辑

Web IDE

原始数据

按行查看

历史

python爬取58同城租房信息_分页爬取58同城租房信息.py相关推荐

  1. python爬虫影评_Python爬虫(二十)_动态爬取影评信息

    本案例介绍从JavaScript中采集加载的数据.更多内容请参考:Python学习指南 #-*- coding:utf-8 -*- import requests import re import t ...

  2. python爬取京东手机参数_python爬虫——分页爬取京东商城商品信息(手机为例)...

    1.最近刚开始学习python   写了个爬虫练习,感觉主要是得会用F12查询网站结构代码.还涉及到反爬虫,每个网站都不一样,拿到的解析出的json数据格式也不同.得有些Web知识的基础才行. htt ...

  3. sql 获取数据库字段信息_使用DBATools获取SQL数据库详细信息

    sql 获取数据库字段信息 In the series of articles on DBATools, (see TOC at the bottom) we are exploring useful ...

  4. mysql分页查询出租房屋信息_分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)...

    分页查询信息 使用jdbc连接mysql数据库实现分页查询任务 通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上. 本项目时一个简单的运用eclipse ...

  5. python爬取微信小程序源代码_爬虫爬取微信小程序

    之前打算做个微信小程序的社区,所以写了爬虫去爬取微信小程序,后面发现做微信小程序没有前途,就把原来的项目废弃了做了现在的网站观点,不过代码放着也是放着,还不如公开让大家用,所以我把代码贴出来,有需要的 ...

  6. python爬取股票大单历史记录_定向爬取股票数据——记录一次爬虫实战

    今天是八月2号,自学python爬虫已经一整个月了.不学不理解,真正学了才发现,python不愧是一门博大精深的高级编程语言,我学到现在也才只见识到它冰山一脚,python应用的范围即便相比于c.c+ ...

  7. python爬取知乎话题广场_用于爬取知乎某个话题下的精华问题中所有回答的爬虫...

    思路 我的整个算法的思路还是很简单的,文字版步骤如下: 1.通过话题广场进入某个话题的页面,避免了登陆注册页面的验证,查找到对应要爬取的话题,从 url 中得到话题id 2.该页面的所有资源采用了延迟 ...

  8. python爬取b站弹幕分析_如何爬取b站弹幕文件

    我们知道编写一个爬虫之前最重要的是进行网页结构的分析,确定你要抓取的部分是属于网页结构的哪一部分.以"你绝对没听过的梁朝伟唱歌 一开口就苏了 可惜被梁家辉开腔了"为例子,打开谷歌浏 ...

  9. python爬取今日头条后台数据_爬虫爬取今日头条数据代码实现

    课程链接 讲师的公众号文章:今日头条数据抓取及持久化(完整代码版,含IP和用户代理)​mp.weixin.qq.com 课程代码 抓取并持久化user-agent工具utils.py 对于爬虫工具,需 ...

最新文章

  1. 轻松看懂机器学习十大常用算法
  2. FastReport.Net 入门
  3. python如何下载zip文件_使用python-mechaniz下载zip文件
  4. 如何用TypeScript开发微信小程序
  5. 2797:最短前缀 Trie
  6. DTC精彩回顾—黄东旭《TiDB数据驱动的企业智能化转型新方向》丨PPT视频
  7. ModelArts黑科技揭秘|弹性训练,让训练资源张弛有度
  8. Python 2 结束支持,Ubuntu 20.04 LTS 继续进行将其移除的工作
  9. outlook客户端接收邮件报错0x80040600
  10. tomcat加载出现找不到web
  11. Date类与DateFormat类
  12. 图片jpg格式怎么转换
  13. 比较全的机油教程(android)
  14. Word里面的大括号怎么打出来?
  15. C#实现在图片上添加文字和二维码
  16. 工商银行转账出现java_工行企业网银转账提示信息代码4506是什么意思?
  17. RCLAMP0524P超低电容TVS二极管阵列,DFN-10L封装
  18. 《大江大河2》中教科书般的精神自救-如何让反感你的人欣赏你
  19. c语言中符号是什么作用是什么,c语言中的符号|=是什么意思?
  20. python所用到的英语单词_用Python自制考研英语单词手册

热门文章

  1. 英语与计算机工作总结,2017年上学期英语教师个人工作总结与2017年上学期计算机教学工作总结合集.doc...
  2. 今年11月初阿里巴巴社招面试经历分享,Java工程师方向已拿offer【附学习方法】
  3. speedoffice使用方法-Word怎么在方框里面打对勾
  4. 《数字图像处理(第三版)》 第二章 数字图像基础 笔记1(视觉与电磁波谱)
  5. 数据库面试复习_数据科学面试复习
  6. identifier “ “ is undefined 错误
  7. 京东大数据技术白皮书(附下载)
  8. unity UGUI 九宫格 拉伸
  9. cbrt函数_cbrt()函数以及C ++中的示例
  10. These songs can cheer you up when life gets hard