python3爬虫抓取链家上海租房信息

环境:win10,anaconda3(python3.5)

爬取对象网站:链家上海租房

方法一:利用requests获取网页信息,再利用正则提取数据,并将结果保存到csv文件。

代码地址:代码

抓取到的数据如下所示:

从左往右依次是:房屋链接、房屋描述、房屋布局、房屋大小、所在区、所在区的具体区域、房屋楼层数、交通信息、看房时间、房租(/月)、上架时间以及当前有多少人看过该房屋。



方法二:利用requests获取网页信息,再用BeautifulSoup解析数据,并用MongoDB保存结果。

主要爬取的数据有:房屋链接、房屋描述、小区、户型、面积,所在区域、房租、交通信息、多少人看过等。


链家只提供100页数据,所以只爬取这100页数据。

审查元素发现每个li标签就是一个房源


而在每个li标签中,房屋信息全在class=info-panel中,所以class=info-panel中的数据即为我们需要抓取的数据块。

用BeautifulSoup解析数据,

soup = BeautifulSoup(html, 'lxml')
    for item in soup.select('.info-panel'):

一个个装载数据即可

        houseUrl = item.find("h2").a["href"]
        title = item.find("h2").a["title"]

        。。。。

然后将抓取好的数据,存入数据库。

先为每个item生成一个链表:

yield {
            '_id': id,
            'houseUrl': houseUrl,
            'houseDescription': title,
            'xiaoqu': xiaoqu,
            'huxing': huxing,
            'mianji': mianji,
            'area': area,
            'sub_area': sub_area,
            'traffic': subway,
            'price': price,
            'data': data,
            'watchedPersons': watched
        }

初始化设置MongoDB(windows配置MongoDB移步至:win10 配置MongoDB以及可视化工具Robo 3T

client = pymongo.MongoClient('mongodb://localhost:27017')
db_name = 'lianjia_zufang_shanghai'
db = client[db_name]
collection_set01 = db['set01']

再依次将数据存入数据库中

for item, index in parse_one_page(html, index):
            collection_set01.save(item)

保存到数据库中的数据如下:


完整代码:代码

总之就是写好自己的model类,所有数据一股脑捣鼓进去,然后save。

只是个爬虫小程序,代码写得比较简单,只是能跑起来而已。

猜你喜欢

转载自blog.csdn.net/Atwood_song/article/details/79001721