Python爬虫之小猪短租房一、xpath爬取分析二、代码三、简单分析四、问题

前天初步学习了xpath,今天进行一下小练习,爬取小猪短租房北京房源的信息

一、xpath爬取分析

1 爬取的信息有价格,地点,出租类型,床数量,宜居人数,评分,点评数。

2 xpath是先抓大在抓小,找循环点。

二、代码

import requests
from lxml import etree
import pymongo

client = pymongo.MongoClient('localhost', 27017)
test = client['test']
xiaozhu = test['xiaozhu']

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
}

urls = ['http://bj.xiaozhu.com/search-duanzufang-p{}-0/'.format(str(i)) for i in range(1,14)]

def get_info(url):
    html = requests.get(url,headers=headers)
    selector = etree.HTML(html.text)
    commoditys = selector.xpath('//ul[@class="pic_list clearfix"]/li')

    for commodity in commoditys:
        address = commodity.xpath('div/div/a/span[@class="result_title hiddenTxt"]/text()')[0]
        price = commodity.xpath('div/span[@class="result_price"]/i/text()')[0]
        lease_type = commodity.xpath('div/div/em/text()')[0].split('/')[0].strip()
        bed_amount = commodity.xpath('div/div/em/text()')[0].split('/')[1].strip()
        suggestion = commodity.xpath('div/div/em/text()')[0].split('/')[2].strip()
        infos = commodity.xpath('div/div/em/span/text()')[0].strip()
        comment_star = infos.split('/')[0] if '/' in infos else '无'
        comment_amount = infos.split('/')[1] if '/' in infos else infos

        content = {
            'address':address,
            'price':price,
            'lease_type':lease_type,
            'bed_amount':bed_amount,
            'suggestion':suggestion,
            'comment_star':comment_star,
            'comment_amount':comment_amount
        }
        xiaozhu.insert_one(content)

for url in urls:
    get_info(url)

三、简单分析

上次许多人问我,数据图是用什么做的,在这里给大家说一下:是用个人BDP做的,很简单,但个人版连接数据只支持csv和excel格式的数据,所以我的做法是:先导入mongodb,然后通过mongodb的导出功能导出为CSV的数据进行分析,导出csv格式的代码:

mongoexport -d test -c xiaozhu --csv -f address,price,lease_type,bed_amount,suggestion,comment_star,comment_amount -o xiaozhu.csv

1 -d数据库 2 -c表数据 3 -f表示要导出的字段

四、问题

学习xpath是为scrapy框架做准备,自己捣鼓了二天,写的代码爬不出数据(也是小猪短租的爬取),本人win7系统加python3.5

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏直播开发

FLV视频文件格式图示

FLV协议是一种常见的视频文件格式,现在很多的直播中经常使用到http-flv协议,即在http上传送flv格式数据。由于笔者从事直播系统后台开发,对flv格...

1352
来自专栏JadePeng的技术博客

贝叶斯文本分类c#版

关于这个话题,博客园已经有多个版本了 基于朴素贝叶斯分类器的文本分类算法(上) 也谈贝叶斯分类(C#)版本 PyMining-开源中文文本数据挖掘平台 Ver ...

2905
来自专栏杨熹的专栏

[读论文] Copying Mechanism in Sequence-to-Sequence

​Paper Today: 'Incorporating Copying Mechanism in Sequence-to-Sequence Learning'...

3435
来自专栏专知

【干货】使用TensorFlow官方Java API调用TensorFlow模型(附代码)

4424
来自专栏yl 成长笔记

设计模式之策略模式

The strategy pattern(also known as the policy pattern) is a behavioural software...

753
来自专栏码匠的流水账

使用opennlp自定义命名实体

opennlp的自定义命名实体的标注,给以了一定定制空间,方便开发者定制各自领域特殊的命名实体,以提高特定命名实体分词的准确性。

701
来自专栏有趣的Python和你

Python爬虫之阳光电影爬虫爬虫分析代码

1335
来自专栏专知

【干货】TensorFlow中那些鲜为人知却又极其实用的知识

TensorFlow的生态圈极其强大,覆盖了科研、工程中的各种流程,其中一些特别好用的模块和技巧可以使你的工作效率大幅度提升,也可以让你的产品变得非常稳定。本文...

960
来自专栏闵开慧

如何生成二维码过程详解

如何生成二维码过程详解 1 下载zxing2.1,zxing j2se.jar 2 本代码配置环境:eclipse、java1.6、windows8、zxing...

3346
来自专栏iOS122-移动混合开发研究院

Aspects– iOS的AOP面向切面编程的库

简介 一个简洁高效的用于使iOS支持AOP面向切面编程的库.它可以帮助你在不改变一个类或类实例的代码的前提下,有效更改类的行为.比iOS传统的 AOP方法,更加...

2568

扫码关注云+社区