python爬取链家数据

本文记录了使用Python进行链家数据爬取的过程,包括遇到的问题和解决方案。V1版提到在Sublime中无法直接执行.py文件可能是因为环境变量未配置,而V2版的内容未详细展开,但可能涉及爬取数据的展示问题,如多图显示的覆盖问题。
摘要由CSDN通过智能技术生成
V1版

注:通过sublime新建.py文件无法command+B 执行,可能与本身环境变量未设定有关,spyder新建的可执行

import sys 
reload(sys) 
sys.setdefaultencoding("utf-8")  #设定编码要放在最上面。之前放在引用库的最下面,然后加到pandas的DataFrame老是出现中文字符为问号的乱码
import pandas as pd 
import urllib2    
import urllib   
import time
import re
from bs4 import BeautifulSoup

#读取指定网页的内容
myurl="http://hz.lianjia.com/ershoufang/pg"+str(1)
req = urllib2.Request(myurl)   
myResponse = urllib2.urlopen(req) 
myPage = myResponse.read()
unmyPage = myPage.decode('utf-8') #转换为Unicode类型

#匹配房源的总价
c1=re.findall('<div.*?class="totalPrice".*?><span>(.*?)</span>(.*?)</div>',unmyPage,re.S)
totalPrice=[]
for item in c1:
    newitem=item[0]+item[1]
    newitem=str(newitem)
    totalPrice.append(newitem)

#匹配房源信息
c2=re.findall('data-el="region">(.*?)</div>',unmyPage,re.S)
houseinfo=[]
for item in c2:
    #item=item.encode('utf-8')
    #print isinstance(item,str)
    houseinfo.append(item)

#匹配房源关注度
c3=re.findall('<span.*?class="starIcon"></span>(.*?)</div>',unmyPage,re.S)
followinfo=[]
for item in c3:
    followinfo.append(item)

house=pd.DataFrame({
  'totalprice':totalPrice,'houseinfo':houseinfo,
    'followinfo':followinfo})

print type(house['totalprice'][0])  #str
print type(house['houseinfo'][0])   #unicode
print type(house['followinfo'][0])  #unicode
print house.head()

参考字符串编码
http://ajucs.com/2015/11/10/Python-character-encoding-explained.html
http://wklken.me/posts/2013/08/31/python-extra-coding-intro.html

V2版
import sys 
reload(sys) 
sys.setdefaultencoding("utf-8")  
import pandas as pd 
import urllib2    
import urllib   
import time
import re
from bs4 import BeautifulSoup

totalPrice=[]
houseinfo=[]
followinfo=[]
for i in range(1,3):
    #读取指定网页的内容
    myurl="http://hz.lianjia.com/ershoufang/pg"+str(i)
    req = urllib2.Request(myurl)   
    myResponse = urllib2.urlopen(req) 
    myPage = myResponse.read()
    unmyPage = myPage.decode('utf-8') 

    #匹配房源的总价
    c1=re.findall('<div.*?class="totalPrice".*?><span>(.*?)</span>(.*?)</div>',unmyPage,re.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值