info

链家数据爬取+地图找房

旧时模样 提交于 2019-12-08 22:27:57
一、链家数据爬取 (由于链家二手房搜索结果有100页的限制,也就是只能搜到3000条结果,因此,我将按照城区搜索结果进行爬取) 首先从搜索结果页面获得二手房详情页面的url,存储到apartment_url.csv中 # -*- coding: utf-8 -*- import csv import re import urllib2 import sqlite3 import random import threading from bs4 import BeautifulSoup import sys reload(sys) sys.setdefaultencoding("utf-8") #Some User Agents hds=[{'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'},\ {'User-Agent':'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.12 Safari/535.11'},\ {'User-Agent':'Mozilla/5.0 (compatible; MSIE 10.0

如何高效地爬取链家的房源信息(一)

ぃ、小莉子 提交于 2019-12-08 22:26:18
“ Python实现的 链家网站的爬虫第一部分。 ” 在之前的文章,以链家成都站为例,分析过链家网站数据的爬取,文章如下: 干货!链家二手房数据抓取及内容解析要点 但是,当时没有根据分析,将爬取实现。 本系列文将以链家南京站为例,使用Python实现链家二手房源信息的爬虫,将数据爬取,并存入数据库中,以便使用。 本文是第一部分,是整个爬取的基础,包括爬取逻辑、伪装正常访问、数据库设计及封装、区域URL爬取四个部分。 01 — 爬取逻辑 本文爬取的地区站虽与之前分析的地区站不同,但二者的结构是一样的,之前分析的成果可以直接套用。 根据之前的分析成果,得到爬取流程如下: 第一步,找到爬取站点的地址,这里爬取的是南京站,为https://nj.lianjia.com/。 第二步,从二手房查询页面获取大区信息,以便后续的查询。 这样的好处是可以分区查询,避免单次数据太多,链家服务器无法返回全部内容,最终导致数据不全。 第二步,根据分区信息,获取小区信息,存数据库,后续爬取操作,均以小区信息为起点。 第三步,根据各个小区信息,获取该小区的所有在售房源信息,存数据库。 第四步,根据 各个小区信息, 获取该小区的所有成交房源信息,存数据库。 确定了爬取流程,也就确定了程序的基本框架,接下来我们还需要准备相关Python库,数据库——sqlite3,以及分析网页库——BeautifulSoup

Python爬虫三:抓取链家已成交二手房信息(58W数据)

末鹿安然 提交于 2019-12-08 22:26:02
环境:Windows7+python3.6+Pycharm2017 目标:抓取链家北京地区已成交二手房信息(无需登录),如下图,户型、朝向、成交时间价格等,保存到csv。最后一共抓取约58W数据,程序运行8h。 ---全部文章: 京东爬虫 、 链家爬虫 、 美团爬虫 、 微信公众号爬虫 、 字体反爬 、 Django笔记 、 阿里云部署 、 vi\vim入门 ---- 一、 打开北京二手房网页 https://bj.lianjia.com/ershoufang/ ,默认显示的是 在售 二手房信息,一共45634套,但是只显示了100页,每页30条,这3000条信息是没有任何反爬的,可以直接抓取,如果要抓取全部45634条,应该要按小区来。本文主要讨论 已成交 二手房信息,数据量更大,难度也要高一点。 二、点击页面右上角 成交 ,切换到已成交二手房信息,显示一共有73W条数据,但是也只显示100页,每页30条共3000条信息。而且还有个问题就是 近30天内成交的房源的成交时间、价格信息是不显示的 。我们可以右键检查进入开发者模式,在网页的html代码中找到房源的详情页面的url,然后进入详情页面抓取成交时间、价格。 三、如何抓取尽可能多的房源信息 现在问题就是73W已成交二手房信息,怎么能尽可能多的抓下来。 办法就是这些房源通过分类来抓取,比如分不同区域,价格,小区

安居客爬虫项目,爬取房源,保存mysql数据库,详细代码如下!!!

我的未来我决定 提交于 2019-12-08 22:10:54
import time import requests import random import pymysql from lxml import etree class AnJuKe(): # 初始化 def __init__(self, url): self.connect = pymysql.connect( host = 'localhost', db = 'pachong', user = 'root', password = '12345' ) self.cursor = self.connect.cursor()#创建游标 self.tree = self.get_tree(url) self.result_city() # 判断是否为空 def is_empty(self,data): if data: data = data[0] else: data = '无信息' return data # 得到tree def get_tree(self, url): # 代理ip proxies_list = [{'http': 'http://117.191.11.111:8080'}, {'http': 'http://118.25.104.254:1080'}, {'http': 'http://203.195.168.154:3128'}, {'http':

Selenium+Python爬取房天下二手房数据

你说的曾经没有我的故事 提交于 2019-12-08 22:06:41
注意!注意!注意!本文中大图较多,建议使用PC查看,手机端效果较差! 在上篇“Selenuim+Python网络爬虫基础讲解”博文中讲了一些Selenium的基础知识,接下来就要开始实战了。 其实使用Selenium爬取网页的思路很简单,首先梳理一下爬取流程。 打开二手房珠海地区首页 http://zh.esf.fang.com/ ,首先会出现一个屏蔽页,我们需要点击“我知道了”,才能继续点击其他内容。 在上面的页面中,我们可以看到在区域页签下,有香洲、金湾、斗门等大区,点击香洲大区页签后出现翠微、凤凰北等子区。继续点击翠微后会出现翠微的二手房相关信息。 所以我们的思路就是先获取大区列表,然后点击大区,获取该大区下的子区 列表,逐一按子区爬取就行了。但是我们可以看到当前显示的房屋信息不全,需要我们点进去查看详细信息。详细信息中需要爬取的有以下被框信息。 爬取完以上信息后,需要关闭当前房屋详细信息页签,继续按房屋信息列表爬取。 遍历完当前页的房屋信息后,就需要跳转到下一页。 我们可以看到,这里最方便的页面切换方式就是通过点击“下一页”按钮,到最后一页的时候就没有“下一页”按钮,我们切换子区页签,进入下一个子区继续按上述方式爬取就成。 Go~就按上面的分析开始实现! 每一步基本上都有注释。 from selenium import webdriver from selenium

房天下全国658个城市新房,二手房爬取

萝らか妹 提交于 2019-12-08 22:03:13
房天下北京二手房分布式抓取: import scrapy from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpider, Rule from scrapy_redis.spiders import RedisCrawlSpider class LianjiaSpider(RedisCrawlSpider): name = 'ftx' allowed_domains = ['esf.fang.com'] #start_urls=['https://esf.fang.com'] redis_key = 'ftx' rules = ( Rule(LinkExtractor(allow='https://esf.fang.com/house/i\d+/')), Rule(LinkExtractor(allow='https://esf.fang.com/chushou/.*'), callback='parse_detail',follow=True), ) def parse_detail(self, response): item = {} item['title'] = response.xpath('//*[@class="title floatl"]/text()')

python爬取58同城租房信息

做~自己de王妃 提交于 2019-12-08 21:52:50
#!/bin/env/python # coding=utf-8 import requests import re import os import time # 存储爬取信息的列表 g_info = list ( ) # 58同城用G#x编码的一些奇异字符表示数字,这些时我个人整理的,网站随时会变动 g_dict = { '龒' : '0' , '驋' : '1' , '鸺' : '2' , '餼' : '3' , '龤' : '4' , '麣' : '5' , '閏' : '6' , '龥' : '7' , '鑶' : '8' , '齤' : '9' } def get_session ( ) : """获取一个设置了头部的session,自动保持cookie""" s = requests . Session ( ) s . headers = { 'accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8' , 'accept-language' : 'zh-CN,zh;q=0.9' , 'referer' : 'https://jj.58.com/chuzu/?PGTID=0d100000-008c-78a5-ac77

爬虫数据导成csv及存入数据库

↘锁芯ラ 提交于 2019-12-08 21:47:40
有时对于爬虫得到的数据,需要对其进行整理,一是为了格式统一,二是用excel表格也可以打开。再就是把得到的数据放入数据库都是需要的。 首先来看导成csv: 我认为最重要的一点是,如何把文本数据取出来放入类似二维数组的字符串组来保存。关键就在于如何取。 可以观察到这些数据以此的顺序,因此: with open('info.txt','r') as file: while True: line=file.readline() if line=='': break if len(line.split('\r')[0])==1: continue print len(line.split('\n')[0]) info.append(line.split('\n')[0]) # /r 和 /n 的区别? count=0 for i in info: print "测试",i count=count+1 print "数量",count data=[("1","2","3","4")] for i in range(0,count,4): str=(info[i],info[i+1],info[i+2],info[i+3]) data.append(str) 定义一个info=[]的列表,先来以此存放这些数据,用了split函数来从换行符进行分割。看到这些数据之间有两个空行没

实时爬取二手房数据

房东的猫 提交于 2019-12-08 21:47:26
#coding=utf-8 import time import json from multiprocessing import Pool import requests from bs4 import BeautifulSoup import re import pandas as pd import pymongo import sys reload(sys) sys.setdefaultencoding( 'utf-8' ) def generate_allurl (user_in_nub, user_in_city) : # 生成url url = 'http://' + user_in_city + '.lianjia.com/ershoufang/pg{}/' for url_next in range( 1 , int(user_in_nub)): writer_to_text(url.format(url_next)) yield url.format(url_next) def get_allurl (generate_allurl) : # 分析url解析出每一页的详细url get_url = requests.get(generate_allurl, 'lxml' ) if get_url.status_code == 200 : #re_set = re

房天下房源爬取:scrapy-redis分布式爬虫(一)

亡梦爱人 提交于 2019-12-08 21:45:04
从前几天就开始准备写一个简单地分布式爬虫的项目了,今天算是把问题和bug逐渐解决了,所以会陆续放上来。 主机是windows即此电脑,项目也是在windows下写的,运行会放在linux下的ubuntu系统。 项目是爬取房天下网站全国600多个城市的所有新房和二手房信息 今天主要记录一下windows下项目的完成,和数据库存储。新房存储在MySQL数据库,二手房存储在mongo数据库。 这个网站没有反爬,我们这里还是用一下中间件,设置随机请求头 创建的是基础爬虫,不是通用爬虫,代码如下: fang.py:开始爬虫与提取信息 # -*- coding: utf-8 -*- import scrapy import re from fangtianxia.items import NewHouseItem,ESFHouseItem class FangSpider(scrapy.Spider): name = 'fang' allowed_domains = ['fang.com'] start_urls = ['https://www.fang.com/SoufunFamily.htm'] def parse(self, response): #所有的城市链接都在td标签中 #td标签包含在tr标签中 #每一行的tr标签,从第3个开始是包含城市链接的td标签 #获取所有的tr标签