是小打小闹

哈哈,现在开始正式进行爬虫书写首先,需要分析一下要爬取的网站的结构:作为一名河南的学生,那就看看郑州的二手房信息吧!

在上面这个页面中,我们可以看到一条条的房源信息,从中我们发现了什么,发现了连郑州的二手房都是这么的贵,作为即将毕业的学生狗惹不起啊惹不起

还是正文吧!!!由上可以看到网页一条条的房源信息,点击进去后就会发现:

房源的详细信息。OK!那么我们要干嘛呢,就是把郑州这个地区的二手房房源信息都能拿到手,可以保存到数据库中,用来干嘛呢,作为一个地理人,还是有点用处的,这次就不说了好,正式开始,首先我采用python3.6 中的requests,BeautifulSoup模块来进行爬取页面,首先由requests模块进行请求:

# 网页的请求头

header = {

'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'

}

# url链接

url = 'https://zhengzhou.anjuke.com/sale/'

response = requests.get(url, headers=header)

print(response.text)

执行后就会得到这个网站的html代码了

通过分析可以得到每个房源都在class="list-item"的 li 标签中,那么我们就可以根据BeautifulSoup包进行提取

# 通过BeautifulSoup进行解析出每个房源详细列表并进行打印

soup = BeautifulSoup(response.text, 'html.parser')

result_li = soup.find_all('li', {'class': 'list-item'})

for i in result_li:

print(i)

通过打印就能进一步减少了code量,好,继续提取

# 通过BeautifulSoup进行解析出每个房源详细列表并进行打印

soup = BeautifulSoup(response.text, 'html.parser')

result_li = soup.find_all('li', {'class': 'list-item'})

# 进行循环遍历其中的房源详细列表

for i in result_li:

# 由于BeautifulSoup传入的必须为字符串,所以进行转换

page_url = str(i)

soup = BeautifulSoup(page_url, 'html.parser')

# 由于通过class解析的为一个列表,所以只需要第一个参数

result_href = soup.find_all('a', {'class': 'houseListTitle'})[0]

print(result_href.attrs['href'])

这样,我们就能看到一个个的url了,是不是很喜欢

好了,按正常的逻辑就要进入页面开始分析详细页面了,但是爬取完后如何进行下一页的爬取呢所以,我们就需要先分析该页面是否有下一页

同样的方法就可以发现下一页同样是如此的简单,那么咱们就可以还是按原来的配方原来的味道继续

# 进行下一页的爬取

result_next_page = soup.find_all('a', {'class': 'aNxt'})

if len(result_next_page) != 0:

print(result_next_page[0].attrs['href'])

else:

print('没有下一页了')

因为当存在下一页的时候,网页中就是一个a标签,如果没有的话,就会成为i标签了,所以这样的就行,因此,我们就能完善一下,将以上这些封装为一个函数

import requests

from bs4 import BeautifulSoup

# 网页的请求头

header = {

'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'

}

def get_page(url):

response = requests.get(url, headers=header)

# 通过BeautifulSoup进行解析出每个房源详细列表并进行打印

soup = BeautifulSoup(response.text, 'html.parser')

result_li = soup.find_all('li', {'class': 'list-item'})

# 进行下一页的爬取

result_next_page = soup.find_all('a', {'class': 'aNxt'})

if len(result_next_page) != 0:

# 函数进行递归

get_page(result_next_page[0].attrs['href'])

else:

print('没有下一页了')

# 进行循环遍历其中的房源详细列表

for i in result_li:

# 由于BeautifulSoup传入的必须为字符串,所以进行转换

page_url = str(i)

soup = BeautifulSoup(page_url, 'html.parser')

# 由于通过class解析的为一个列表,所以只需要第一个参数

result_href = soup.find_all('a', {'class': 'houseListTitle'})[0]

# 先不做分析,等一会进行详细页面函数完成后进行调用

print(result_href.attrs['href'])

if __name__ == '__main__':

# url链接

url = 'https://zhengzhou.anjuke.com/sale/'

# 页面爬取函数调用

get_page(url)

好了,那么咱们就开始详细页面的爬取了

哎,怎么动不动就要断电了,大学的坑啊,先把结果附上,闲了在补充,

import requests

from bs4 import BeautifulSoup

# 网页的请求头

header = {

'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'

}

def get_page(url):

response = requests.get(url, headers=header)

# 通过BeautifulSoup进行解析出每个房源详细列表并进行打印

soup_idex = BeautifulSoup(response.text, 'html.parser')

result_li = soup_idex.find_all('li', {'class': 'list-item'})

# 进行循环遍历其中的房源详细列表

for i in result_li:

# 由于BeautifulSoup传入的必须为字符串,所以进行转换

page_url = str(i)

soup = BeautifulSoup(page_url, 'html.parser')

# 由于通过class解析的为一个列表,所以只需要第一个参数

result_href = soup.find_all('a', {'class': 'houseListTitle'})[0]

# 详细页面的函数调用

get_page_detail(result_href.attrs['href'])

# 进行下一页的爬取

result_next_page = soup_idex.find_all('a', {'class': 'aNxt'})

if len(result_next_page) != 0:

# 函数进行递归

get_page(result_next_page[0].attrs['href'])

else:

print('没有下一页了')

# 进行字符串中空格,换行,tab键的替换及删除字符串两边的空格删除

def my_strip(s):

return str(s).replace(" ", "").replace("\n", "").replace("\t", "").strip()

# 由于频繁进行BeautifulSoup的使用,封装一下,很鸡肋

def my_Beautifulsoup(response):

return BeautifulSoup(str(response), 'html.parser')

# 详细页面的爬取

def get_page_detail(url):

response = requests.get(url, headers=header)

if response.status_code == 200:

soup = BeautifulSoup(response.text, 'html.parser')

# 标题什么的一大堆,哈哈

result_title = soup.find_all('h3', {'class': 'long-title'})[0]

result_price = soup.find_all('span', {'class': 'light info-tag'})[0]

result_house_1 = soup.find_all('div', {'class': 'first-col detail-col'})

result_house_2 = soup.find_all('div', {'class': 'second-col detail-col'})

result_house_3 = soup.find_all('div', {'class': 'third-col detail-col'})

soup_1 = my_Beautifulsoup(result_house_1)

soup_2 = my_Beautifulsoup(result_house_2)

soup_3 = my_Beautifulsoup(result_house_3)

result_house_tar_1 = soup_1.find_all('dd')

result_house_tar_2 = soup_2.find_all('dd')

result_house_tar_3 = soup_3.find_all('dd')

'''

文博公寓,省实验中学,首付只需70万,大三房,诚心卖,价可谈 270万

宇泰文博公寓 金水-花园路-文博东路4号 2010年 普通住宅

3室2厅2卫 140平方米 南北 中层(共32层)

精装修 19285元/m² 81.00万

'''

print(my_strip(result_title.text), my_strip(result_price.text))

print(my_strip(result_house_tar_1[0].text),

my_strip(my_Beautifulsoup(result_house_tar_1[1]).find_all('p')[0].text),

my_strip(result_house_tar_1[2].text), my_strip(result_house_tar_1[3].text))

print(my_strip(result_house_tar_2[0].text), my_strip(result_house_tar_2[1].text),

my_strip(result_house_tar_2[2].text), my_strip(result_house_tar_2[3].text))

print(my_strip(result_house_tar_3[0].text), my_strip(result_house_tar_3[1].text),

my_strip(result_house_tar_3[2].text))

if __name__ == '__main__':

# url链接

url = 'https://zhengzhou.anjuke.com/sale/'

# 页面爬取函数调用

get_page(url)

由于自己边写博客,边写的代码,所以get_page函数中进行了一些改变,就是下一页的递归调用需要放在函数后面,以及进行封装了两个函数没有介绍,

而且数据存储到mysql也没有写,所以后期会继续跟进的,thank you!!!

以上这篇python爬取安居客二手房网站数据(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

python爬取房源数据_python爬取安居客二手房网站数据(实例讲解)相关推荐

  1. python爬取安居客二手房网站数据(转)

    之前没课的时候写过安居客的爬虫,但那也是小打小闹,那这次呢, 还是小打小闹 哈哈,现在开始正式进行爬虫书写 首先,需要分析一下要爬取的网站的结构: 作为一名河南的学生,那就看看郑州的二手房信息吧! 在 ...

  2. python爬取安居客二手房网站数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  3. 抓取安居客二手房经纪人数据,python爬虫自动翻页

    为什么80%的码农都做不了架构师?>>>    和链接不一样,安居客网站里面没有找到总页数,可能在json里面有,只是我没有找到. 基于此能不能做网页的循环爬取呢. 能否判断页面读取 ...

  4. python 图像处理与识别书籍_Python图像处理之识别图像中的文字(实例讲解)

    ①安装PIL:pip install Pillow(之前的博客中有写过) ②安装pytesser3:pip install pytesser3 ③安装pytesseract:pip install p ...

  5. 安居客二手房python数据可视化

    继上一篇安居客二手房的数据进行预处理后,接下来就可以对数据进行可视化. 我们需要用到的库有: import os import shutilimport pandas as pd from matpl ...

  6. 使用Python爬取安居客二手房房价数据

    作为一个Python新手,公司突然安排我爬取房价数据,真让人有点头大啊!幸好网上的大佬们经验丰富,给予了很多代码上的帮助.本文代码在网友pythoner111爬虫项目–爬取安居客二手房信息的基础上修改 ...

  7. Scrapy爬取重庆安居客二手房并存入mysql数据库(下)

    上篇中我们获取了重庆的一二级区(Scrapy爬取重庆安居客二手房并存入mysql数据库(上)),这一篇我们根据二级区获取相应的二手房信息. 初始化数据库 创建二手房信息数据库表,house表存放二手房 ...

  8. 爬虫项目--爬取安居客二手房信息

    爬虫实战(爬取安居客二手房信息-成都天府新区) 环境:python3.6 pycharm bs4库 解析方式:bs4 需求:爬取二手房信息字段(titile,house_type,build_time ...

  9. 安居客二手房信息爬取

    本文实现爬取安居客二手房房源信息,并保存到本地csv文本中 爬取网址:https://tianjin.anjuke.com/sale/hexi/(天津河西区二手房房源) 思路 1.构造请求地址:通过分 ...

最新文章

  1. QQ群管理员无法进行成员管理问题的解决
  2. 【转】电驴提示“该内容尚未提供权利证明,无法提供下载”之解决办法详解...
  3. java 跟踪错误程序_Java异常处理 如何跟踪异常的传播路径
  4. Hibernate sql查询
  5. 房价预测python_详解 Kaggle 房价预测竞赛优胜方案:用 Python 进行全面数据探索...
  6. 查漏补缺!这份 VUE 学习知识总结请注意查收! | 原力计划
  7. 获取运行的class文件,所在的目录
  8. [Oracle整理]树形查询(start with connect by)
  9. 100道MySQL面试题及答案
  10. Python 彻底搞懂列表推导式|初级到进阶(实例30+)
  11. C语言100题练习计划 47——查询水果价格
  12. 定义网络营销,到底和网店有什么区别
  13. 什么是陀螺仪的dr算法_如何评价项目:通过陀螺仪传感器算法,从声波振动中提取语音?...
  14. 阿里巴巴大数据之路-维度设计
  15. 需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是 。 A 单链表 B 静态链表 C 线性链表 D 顺序存储结构
  16. 朝花夕拾——动态规划
  17. SpringBoot resultful风格返回格式
  18. 专题三 Problem X
  19. 除霾神器:中科爱讯推出BHU智能新风机,让你呼吸森林空气
  20. 写出高斯定理的数学形式并文字解释

热门文章

  1. FlowNet3D - Learning Scene Flow in 3D Point Clouds[CVPR2019]
  2. oracle初始化ou,oracle配置,备份及恢复数据库
  3. PCS7 WINCC报表 1.不需要第三方任何插件实现。
  4. matlab安装的根目录查看
  5. duilib修复ActiveXUI控件bug,以支持flash透明动态背景
  6. B站视频批量下载,一个脚本就够了,手把手教你批量下载B站1080P高清视频。
  7. 一半圆形闭合线圈,半径,通过电流,放在均匀磁场中,磁场方向与线圈平面平行,磁感应强度?
  8. 弱监督学习 weakly supervised learning 笔记
  9. 【论文速递】IJCV2022 - CRCNet:基于交叉参考和区域-全局条件网络的小样本分割
  10. ansa打开catia文件_ANSA软件介绍.doc