第一个爬虫

#第一个爬虫

---

今天写了第一个爬虫,几点困难:

1. 开发环境设置: py3.5 vs py2.7,anaconda好像默认安装在2.7下面,导致最新版lxml库无法在py3.5里导入。**解决方案**使用anaconda单独建立py3.5环境,使用 $source activate py3.5 来激活。

2. html构成的理解: 今天爬了小猪,无需cookie信息即可浏览,所以header里无需加入cookie信息。但是对于html selector / xpath的应用还需挺多练习。目前仍然不太懂得如何抓取图片。

3. python本身的熟悉度,逐页抓取后如何保存在同一个列表里/如何存储图片到本地,这个都需对py本身有更多练习。

4. 写了第一个爬虫还是很开心的,希望继续努力。

---

**代码**:

~~~Python

#_*_ encoding: utf-8 _*_

from bs4 import BeautifulSoup

import requests

first_url = 'http://bj.xiaozhu.com/xicheng-305-9999yuan-duanzufang-9/?startDate=2016-07-01&endDate=2016-07-04'

urls = ['http://bj.xiaozhu.com/xicheng-duanzufang-p{}-8/?startDate=2016-07-01&endDate=2016-07-04'.format(str(i)) for i in range(1,9)]

headers = {

'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'

}

data = []

def get_housing(url):

wb_data = requests.get(url)

soup = BeautifulSoup(wb_data.text, 'lxml')

info = []

descs = soup.select('div.result_btm_con.lodgeunitname > div > a > span')

prices = soup.select('div.result_btm_con.lodgeunitname > span.result_price > i')

addresses = soup.select('div.result_btm_con.lodgeunitname > div > em')

for desc, price, address in zip(descs, prices, addresses):

data = {

'desc': desc.get_text(),

'price': price.get_text(),

'address': list(address.stripped_strings)

}

info.append(data)

for item in info:

item['address'][0] = item['address'][0][:2]

if len(item['address']) < 3: continue

item['address'][2] = item['address'][2].strip('-').strip()

return info

for url in urls:

data += get_housing(url)

total = 0

for item in data:

print(item)

total+=int(item['price'])

average = total / len(data)

print ('总房数:', len(data))

print ('平均房价:', average)

~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在慕课网上学习了简单的爬虫该怎么写,看了一遍,敲了一遍,还是有些迷糊,于是,又把每一步的要点总结了一下。 ...
    芈子契阅读 326评论 0 0
  • [TOC] 目标 用scrapy写一个可以下载页面,解析静态页面的爬虫,加head,加链接生成器解析,可能用xpa...
    russelllei阅读 528评论 0 1
  • 文集名字已经改成《蜘蛛结网》了,那么这个专题下不限于课程学习的练习题,也有自己的练手和札记。最近去爬了一个留学服务...
    mugichya阅读 352评论 0 1
  • 蓄(tuo)谋(yan)已久的我终于开始正式学习python啦,学习了三个教程: 1.python基础:《父与...
    Yanzhao_Chen阅读 404评论 0 0
  • 1.定义Item Item 是保存爬取到的数据的容器;其使用方法和 python 字典类似。 您可以通过创建一个 ...
    SingleDiego阅读 1,006评论 0 1