运行结果:

成功运行

我的代码:

from bs4 import BeautifulSoup

import requests

import time

# 建一个列表来收纳从聚合页面爬取到的所有信息页面

house_url = []

# urls是所有聚合页面的集合

urls = ['http://bj.xiaozhu.com/search-duanzufang-p{}-0/'.format(str(i)) for i in range(1,14)]

# 分析租房信息页面

def url_analysis(url):

time.sleep(2)

# 请求租房页面,并解析页面信息

web_data = requests.get(url)

soup = BeautifulSoup(web_data.text, 'lxml')

# 提取名称(titles)、地址(house_addrs)、价格(house_prices)、第一张房源图片(house_imgs)、

# 房东图片(owner_imgs)、房东性别(owner_sexes)、房东姓名(owner_names)

titles = soup.select('div.con_l > div.pho_info > h4 > em')

house_addrs = soup.select('div.con_l > div.pho_info > p > span')

house_prices = soup.select('div.day_l > span')

house_imgs = soup.select('img[id="curBigImage"]')

owner_imgs = soup.select('div.member_pic > a > img')

owner_sexes = soup.select('div.member_pic > div')

owner_names = soup.select('div.w_240 > h6 > a')

for title, add, price, img, pic, sex, name in \

zip(titles, house_addrs, house_prices, house_imgs, owner_imgs, owner_sexes, owner_names):

# 这里要注意考虑性别没有填写的情况

if sex.get('class')[0] == 'member_ico':

sex = '男'

elif sex.get('class')[0] == 'member_ico1':

sex = '女'

else:

sex = '保密'

# 把所有获取的信息汇总成一个词典

data = {

'title' : title.get_text(),

'add' : add.get_text().rstrip(),

'price' : '¥ '+price.get_text(),

'img' : img.get('src'),

'pic' : pic.get('src'),

'sex' : sex,

'name' : name.get_text()

}

print(data)

# 从聚合页面获取租房页面地址

def url_get(url):

time.sleep(3)

web_data = requests.get(url)

soup = BeautifulSoup(web_data.text, 'lxml')

house = soup.select('ul.pic_list.clearfix > li > a')

for urls in house:

urls = urls.get('href')

house_url.append(urls)

return house_url

#起点

for single_url in urls:

url_get(single_url)

print('总共爬取到',len(house_url),'条信息')

for each_url in house_url:

print('这是第',house_url.index(each_url) + 1,'条租房信息')

url_analysis(each_url)

我的感想:

用时接近3个小时(⊙o⊙)…

真的很怕运行到第100多条的时候报错(多谢群友提醒性别的if条件要分3个)

每个soup.select都是写一个打印一个(如果返回的是多个元素的打印 len() 比较实用),提取不出来就要改 CSS.selector

soup.select返回的都是列表,但其中的元素都是 bs4.tag

貌似以前看到过,用try、except来避免出错而中断运行

这边还有群友的一个关于性别的处理方式,用字典查询来替换if/else,另外也没有用for循环来迭代,而是直接切片(里面只有一个元素)

群友用的性别方法

一个悬而未决的问题:

为什么 sex.get() 返回的是一个列表 而 pic.get() 返回的是一个字符串呢??

悬而未决的问题

麻瓜编程python爬虫微专业_麻瓜编程·python实战·1-3作业:爬取租房信息相关推荐

  1. 麻瓜编程python爬虫微专业_麻瓜编程 - 主页

    ${content} 你输入的邮件地址曾经通过${type}激活了本站帐号,请使用${type}帐号直接登录. 课程习题 : 提示 请选择一个答案 提交 查看正确答案 下一题 ${option}: $ ...

  2. 利用python爬取租房信息_Python爬虫实战(1)-爬取“房天下”租房信息(超详细)

    #前言html 先看爬到的信息:python 今天主要用到了两个库:Requests和BeautifulSoup.因此我先简单的说一下这两个库的用法,提到的都是此文须要用到的.编程 #Requests ...

  3. 正经网站爬虫实战,如何快速使用Selenium爬取租房信息

    租房信息爬虫实战 摘要 1.技术选型 1.1 Selenium 1.2 MySql 2 程序思路 3 程序实现(python selenium) 3.1 引入需要的包 3.2 初始化驱动和数据库连接 ...

  4. Java 爬虫:是时候 Get 新技能了,使用 Java 爬取网页信息

    如果你想利用自己的技术做出一点有意思的产品来,那么爬虫.算法和 AI 等技术可能是一个不错的突破口.今天,我们就来介绍下使用 Java 爬取页面信息的几种思路. 说起爬虫,自从 Python 兴起之后 ...

  5. python爬虫获取方法_小白学python爬虫:2.获得数据

    在上一篇文章我我们已经完成了对网页的分析,包括了:在源码中数据的定位:获取方法(xpath).那么在获得数据之前我们考虑的则是如何获取源码. 接下来我们将学习如何从服务器获得源码. #写在前面&quo ...

  6. python爬虫实际应用_如何使用python爬虫论坛?

    除了之前跟大家讲述过的视频.音乐以及时事新闻,关于爬虫可以做的事情有很多很多,像论坛也是其中之一,应用最火的内容,之前给大家罗列的爬虫实际内容有很多,但是还是希望将每个实际内容都跟大家说一下.让大家在 ...

  7. python爬虫安装教程_环境安装-Python 原生爬虫教程 | IT大叔

    环境安装 了解了一些 Python 爬虫的基本知识之后,我们要正式开始 Python 爬虫的学习了,因为是要使用 Python 语言来进行爬虫开发,所以首先要在电脑上安装 Python ,那么这节课我 ...

  8. python爬虫网络中断_如何解决Python爬虫中的网络掉线问题?

    在学校里的时候,除了上课,还有一大幸福的事情,就是用着学校的网线网络.当然玩的时候很开心,就是没事关键词时刻掉链子.时不时地网络掉线让人非常恼火,什么团战在梦游啊,看剧卡住不动了,相信能引起很多小伙伴 ...

  9. python爬虫未来发展趋势_什么是Python爬虫?有什么应用空间?-未来数据科技关于礼的诗句...

    网友评论: 网络爬虫为一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面 ...

  10. python爬虫论坛代码_如何使用Python爬虫 抓取论坛关键字出现频率!

    前言: 之前学习了用python爬虫的基本知识,现在计划用爬虫去做一些实际的数据统计功能.由于前段时间演员的诞生带火了几个年轻的实力派演员,想用爬虫程序搜索某论坛中对于某些演员的讨论热度,并按照日期统 ...

最新文章

  1. java开发经验分享_java开发经验分享(一)
  2. 表驱动设计的一点见解
  3. 外卖ERP管理系统(一)
  4. 利用小工具instsrv和srvany 创建windows服务
  5. DeepFocus,基于AI实现更逼真的VR图像
  6. 在ASP.NET Core 2.0中使用MemoryCache
  7. PHPStorm 配置远程服务器文件夹在本地windows镜像,实现代码自动同步(类似于Samba架构文件同步功能)
  8. mysql慢查询工具
  9. 第六节:框架搭建之EF的Fluent Api模式的使用流程
  10. java string类型详解_Java字符串类型详解
  11. iframe多层嵌套时获取元素总结
  12. MyCat分布式数据库集群架构工作笔记0016---高可用_单表存储千万级_海量存储_垂直分库划分原则
  13. [设计模式-行为型]解释器模式(Interpreter)
  14. API 接口设计中 Token 类型的分类与设计
  15. centos是什么linux操作系统,Linux 操作系统之CentOS的介绍
  16. 下载proteus-isis时出现的错误
  17. 【白话设计模式】23种设计模式一句话通俗讲解
  18. 人工智能简史�_人工智能简史
  19. 【区块链开发入门】(四) Truffle详解篇1
  20. 2010年中国十大最赚钱职业

热门文章

  1. 基于汇编与c语言的单片机原理及应用答案,基于汇编与C语言的单片机原理及应用...
  2. 27 构造连续的ICMP数据包
  3. ibm刀片服务器虚拟化,刀片服务器内置虚拟化 IBM升级服务器
  4. ASP.NET中Button控件的CommandName和CommandArgument属性用法
  5. 谷歌电子市场开发记录(2)-框架搭建
  6. python3.7.2安装pywifi_Python pywifi包_程序模块 - PyPI - Python中文网
  7. JAVA制作简单的查询身份证号信息小程序
  8. 使用 pyecharts 以及matplotlib分析猫眼哪吒影评
  9. 恶意代码防范技术原理-计算机病毒和特洛伊木马分析与防护
  10. (四)DIH导入结构化数据