对安居客新房房源进行整站爬取,全国所有城市的新房数据。

获取数据字段也主要集中在第一个页面,并未进行二层页面的挖掘
在持续爬取过程中,会出现验证码的过程,不过它的验证码还是比较友好的,
只需要在浏览器拖动图片就行,代码又能重新运行了。整个爬取过程中我只
拖动了两次。所以安居客是算非常友好的网站了,当然上述问题也可以使用代理IP
解决。接下来还可以做的,加上代理IP,加上多线程,进行二级页面的进一步挖掘。
在此感谢友好的安居客,给我们这些小白有了练手的网站。

"""
整站爬取安居客的新房数据
"""import requests
import re
from pyquery import PyQuery as pq
import json
import csvheaders = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"}#获取所有城市列表
def get_city_page():city_url = "https://www.anjuke.com/sy-city.html"response = requests.get(city_url,headers=headers)if response.status_code == 200 :return response.content.decode("utf-8")else:return None#解析城市列表,获得所有城市名称和url
def parse_city_name(html):doc = pq(html)items = doc(".letter_city ul li .city_list a").items()for item in items:city_name = item.text()city_url = item.attr.hrefpattern = re.compile("https://(.*?).anjuke",re.S)city_english_name = re.search(pattern,city_url).group(1)city_fang_url = "https://"+city_english_name+".fang.anjuke.com/"yield {"city_name":city_name,# "city_url":city_url,# "city_english_name":city_english_name,"city_fang_url":city_fang_url,}#对每个城市进行房源爬取
def get_city_fang_page(url):response = requests.get(url,headers=headers)if response.status_code == 200 :return response.content.decode("utf-8")else:return None#解析页面
def parse_first_page(html):doc = pq(html)items = doc(".key-list.imglazyload .item-mod").items()for item in items:con = pq(item)name = con(".infos .lp-name .items-name").text()address = con(".infos .address .list-map").text()shape = con(".infos .huxing span").text()if shape:shape = shape.strip().replace("\r\n","")price = con("a.favor-pos > p.price").text()around_price = con(".favor-pos .around-price").text()if around_price:around_price = around_price.strip().replace("\r\n","")yield {"name":name,"address":address.replace("\xa0",""),"shape":shape,"price":price,"around_price":around_price,}#获取下一页
def next_page(html):doc = pq(html)next_url = doc(".pagination .next-page").attr.hrefreturn next_url#写入csv文件标题
def write_title_file():with open ("anjuke_newhome.csv","a+",encoding="utf-8-sig",newline="") as f:wea_for=csv.writer(f,delimiter=",")wea_for.writerow(["city_name","name","address","shape","price","around_price"])#写入csv文件内容
def write_content_file(content):with open ("anjuke_newhome.csv","a+",encoding="utf-8-sig",newline="") as f:wea_for=csv.writer(f,delimiter=",")wea_for.writerow([content["city_name"],content["name"],content["address"],content["shape"],content["price"],content["around_price"]])def main():html = get_city_page()for city in parse_city_name(html):#print(city)city_url = city["city_fang_url"]city_html = get_city_fang_page(city_url)for content in parse_first_page(city_html):content["city_name"] = city["city_name"]write_content_file(content)#print(content)while next_page(city_html):next_url = next_page(city_html)city_html = get_city_fang_page(next_url)for content in parse_first_page(city_html):content["city_name"] = city["city_name"]write_content_file(content)if __name__ == '__main__':write_title_file()main()

部分结果展示:一共获取到了126916条数据,大小大约在16M左右。

总体来说还是比较容易的,使用初学者练手。

Python爬虫整站爬取安居客新房房源数据相关推荐

  1. Python爬取安居客新房信息

    由于是刚开始学习Python爬虫,做个简单的爬虫,提供一个学习思路. 由于水平有限,正则表达式写的实在是抠脚,就直接上BeautifulSoup了. BeautifulSoup的学习参考http:// ...

  2. python爬取房源数据_python爬取安居客二手房网站数据(实例讲解)

    是小打小闹 哈哈,现在开始正式进行爬虫书写首先,需要分析一下要爬取的网站的结构:作为一名河南的学生,那就看看郑州的二手房信息吧! 在上面这个页面中,我们可以看到一条条的房源信息,从中我们发现了什么,发 ...

  3. Python爬虫系列之爬取微信公众号新闻数据

    Python爬虫系列之爬取微信公众号新闻数据 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发 > 点击这里联系我们 < 微信请扫描下方二维码 代码仅供学习交流 ...

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

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

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

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

  6. python 爬虫实践 (爬取链家成交房源信息和价格)

    简单介绍 pi: 简单介绍下,我们需要用到的技术,python 版本是用的pyhon3,系统环境是linux,开发工具是vscode:工具包:request 爬取页面数据,然后redis 实现数据缓存 ...

  7. Python爬虫实战:爬取福利彩票双色球中奖结果数据

    一.工程目录 二.python爬虫三步骤 2.1 获取数据 这里爬取数据使用request的库,使用get/post接口请求来做数据的获取即可. 数据获取一般有静态页面数据获取.动态数据获取.伪装请求 ...

  8. Python爬虫之Selenium爬取途牛全国的酒店数据进行地图可视化

    因为找不太到途牛的url规律,就只能慢慢爬取数据,由于页面加载的时间很慢,用一台电脑爬取4000+数据可能需要数小时,这里只是简单实现了每个城市的第一页数据,可以在这个基础上实现多个页面一起爬和强化翻 ...

  9. 利用R语言爬取安居客中经纪人数据,并将结果导入msql数据库

    1.背景 工作需要,需要获取安居客房地产相关数据:本文直接附上代码和注释.本文没有采用浏览器模拟抓取(参考之前文章),因为页面没那么复杂,不需要刻意用浏览器,并且用浏览器会降低速度. 2.代码 set ...

  10. python爬虫篇2——爬取深圳证券交易所股票金融数据

    程序运行截图: mysql代码: create database financial; use financial; CREATE TABLE `lrb` (`id` int(11) NOT NULL ...

最新文章

  1. OpenCV 笔记(05)— opencv.hpp 头文件作用(是其它所有头文件的全集)
  2. 探索Leangoo常用快捷键
  3. 共读计划 | 你有多久没读完一本书了?
  4. 专家:物联网时代信息安全问题亟待各方携手破题
  5. CUDA程序优化技巧
  6. 在tornado里面使用reverse_url
  7. cxf开发webservice服务端怎么返回固定的报文格式_Spring boot webservice怎么玩? 第277篇...
  8. WordPress主题-Real Estate 7–房地产[更至v3.1.0]
  9. 你所不知道的模块调试技巧 - npm link #17
  10. 小雪节气艺术字体设计PNG素材 | 希望可以温暖到你了
  11. python : autopep8
  12. 权限提升 bypass
  13. ORA-20011: Approximate NDV failed: ORA-06564: object EXPDDDP does not exist
  14. 计算机书籍排版抓图要求,计算机录入与排版
  15. 程序员代码下的许豪杰
  16. 衡量两个概率分布之间的差异性的指标
  17. python floor函数_Python floor() 函数
  18. Unity中传送带的实现
  19. 逆波兰式的产生与计算
  20. Python自带的服务器

热门文章

  1. kali安装QQ音乐
  2. linux降低交叉编译器版本,嵌入式ARM+Linux 多個不同版本的交叉編譯器的切換方法...
  3. ffmpeg 结合 ASS字幕制作+特效制作
  4. SSH和SSM的内容
  5. 专升本C语言知识点笔记
  6. CISP 考试教材《第 5 章 知识域:安全工程与运营》知识整理
  7. 技嘉主板BIOS修改风扇转速设置详细教程
  8. 7.8 W 字总结!Java 8—Java 10 特性详解
  9. 弹性系数和线径的计算公式_弹簧弹力计算公式详解
  10. OBV指标交易策略(累积能量潮与移动能量潮,成交量多空比率净额及相关应用原则)