R语言搜房网的抓取

记录者:zff

url = "http://www1.fang.com/"
library(RCurl)
myheader <- c(
"User-Agent"="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0",
"Accept"="text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8",
"Accept-Language"="zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
"Connection"="keep-alive",
"Accept-Charset"="GB2312,utf-8;q=0.7,*;q=0.7"
)
d2 =debugGatherer()
cHandle2<- getCurlHandle(httpheader=myheader,followlocation=1,
debugfunction=d2$update,verbose=TRUE,
cookiefile="C:\Users\Administrator\Desktop\cookie.txt")

temp<- getURL(url,curl=cHandle2,.encoding="gb2312")
write.table(temp,file = "C:\Users\Administrator\Desktop\hello.txt")

在前面利用R语言对搜房网主页进行抓取的时候,能够较好的进行,尽管速度有点慢,但是当对搜房网下的一个网页:http://newhouse.cs.fang.com/house/web/newhouse_sumall.php?page=1
进行抓取的时候,出现了中文乱码的问题,当我使用Firefox进行预览的时候,也出现了中文乱码的问题,当我查看网页编码并改变尝试的时候也出现了问题,问题并没有得到解决,网上有说是Firefox自身的bug问题,尽管查看了很多,但是仍旧无法得到解决预览的中文乱码问题,只能放下这个问题考虑一下爬虫的问题,后来使用Python做爬虫的时候简单的解决了
而R语言乱码的原因原本以为是搜房网做了什么限制,后来查看了很多资料,发现可能是R语言在win下面的中文支持并不好,而在Linux下支持较好,可以使用sessionInfo()来查看,可以发现在win下是支持本地中文的,而在Linux下支持utf8,当我使用Sys.setlocale("LC_CTYPE", "UTF-8")的时候,出现Warning message:
In Sys.setlocale("LC_CTYPE", "UTF-8") :
OS reports request to set locale to "UTF-8" cannot be honored

import urllib
import urllib.request
import gzip

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0',
                'Accept-Encoding': 'gzip'}

url = 'http://newhouse.cs.fang.com/house/web/newhouse_sumall.php?page=1'
html= urllib.request.Request(url, headers=headers)
html = urllib.request.urlopen(html)
html = html.read()
html = gzip.decompress(html)
html = html.decode('gb2312', 'ignore')
f = open("C:\\Users\\Administrator\\Desktop\\hello.txt","w")
f.write(html)
f.close()

你可能感兴趣的:(R语言搜房网的抓取)