logo

给自己完成的这个项目做一次总结

作者:阿蒙的单片镜2021.06.08 20:28浏览量:265

简介:一次项目总结。

作者:opsn

1.在抓取class标签内容的时候,走了一些弯路。由于class是python中的关键词,所以不能直接使用,具体的解决办法有两种:

a=soup.find(attrs={'class':'col-1'})
or
a=soup.find(class_="col-1") 

2.python中array的用法:

numpy中的array非常得实用,但里面只能存放相同的数据类型

3.当python列表或者字典中有utf-8的中文输入时怎么办?

{'prise': u'27000', 'name': u'\u5bcc\u529b\u5341\u53f7\u4e00\u671f', 'address':u'\u6587\u4e00\u897f\u8def\u9ad8\u6559\u8def\u4ea4\u53c9\u53e3'}

解决的办法是添加json:

print json.dumps(store, encoding='UTF-8', ensure_ascii=False)

运行结果是:

{"prise": "27000", "name": "富力十号一期", "address": "文一西路高教路交叉口"}

如果是字符串,则没有问题:

#coding=UTF-8
str='我们'
print str

我们

有关json.dumps()与json.dump()的区别,看这里

简而言之:

dumps是将dict转化成str格式,loads是将str转化成dict格式。

dump和load也是类似的功能,只是与文件操作结合起来了,实际中dump用的较少。

4.爬取与展示应该是能做了,但是如何对所得的东西做出评价呢?这需要我用
5.如何将实际的地址转化为地图上的经纬度:
经纬度地址转换的方法集合(Python描述)
体验下来:利用百度api来获取非常得有效,可以采用如下的方式进行:

http://api.map.baidu.com/geocoder?address=XXX&output=json&key=f247cdb592eb43ebac6ccd27f796e2d2

其中,将XXX替换成具体的中文地址,建议在XXX前加上你想要搜索的城市名称,这样准确率能提高很多!结果会返回一个json数据,再将经纬度从中提取出来会是一个非常简单的过程!

要注意,json数据的提取跟html不一样,以下是举例:

def getLocation_json(addr):
    url= 'http://api.map.baidu.com/geocoder?address=%s&output=json&key=f247cdb592eb43ebac6ccd27f796e2d2'%(addr)
    html = urllib2.urlopen(urllib2.Request(url))
    json1 = html.read() #转化为str类型

    hjson =json.loads(json1) #转化为dict类型
    lng = hjson['result']['location']['lng'] # 经度
    lat = hjson['result']['location']['lat'] # 纬度
    lng_lat = [lng, lat]
    return lng_lat

6.我发现在做html解析的时候,soup.findall(class=”XXX”)一定要看准是你要找的信息所在的class。以下是我要分析的网站的源码:

最开始解析代码如下,我误以为就是class=”houseIcon”:

items=soup.find_all(class_="houseIcon")
    for item in items:
        set={}
        set['name'] = item.find('a').text

结果是没有找到内容:

AttributeError: 'NoneType' object has no attribute 'text'

当我把class替换成houseInfo,就能抓取成功了,?是成功抓去的信息:

[{"name": "朗郡庭园 "}, {"name": "丽江公寓 "}, {"name": "南都德迦东区 "}, {"name": "香颂乐苑 "}.........

7.\n&\r两者的区别:
\r是回车,英文是Carriage return,作用:使光标到行首

\n是换行,英文是New line/line feed,作用:使光标下移一行

我们平时所说的键盘Enter键换行实则应该叫做叫做回车换行(\r\n)

8.正则表达式:

在试着抓取“下一页”的相对url时,我面对的html是这样的:

<a href="/ershoufang/pg97/" data-page="97">上一页</a>
<a href="/ershoufang/" data-page="1">1</a>
<span>...</span>
<a href="/ershoufang/pg96/" data-page="96">96</a>
...
<a href="/ershoufang/pg99/" data-page="99">下一页</a>

我要抓取的是“下一页”那一行的href,因此首先要把那一行给提取出来,最先我的正则匹配式长这样:

<a.*下一页</a>

相关文章推荐

发表评论