Python数据科学(五)- 数据处理和数据采集

传送门:

最近因为工作的事比较忙,要学的东西也很多,没有及时更新,下一阶段我会尽力一天一更的,一块学习的朋友跟紧不走丢ヽ(ˋ▽ˊ)ノ

每时每刻,搜索引擎和网站都在采集大量信息,非原创即采集。采集信息用的程序一般被称为网络爬虫(Web crawler)、网络蜘蛛(Web spider),其行为一般是先“爬”到对应的网页上,再把需要的信息“铲”下来。说的通俗易懂一点网络数据采集程序也像是一只辛勤采蜜的小蜜蜂,它飞到花(目标网页)上,采集花粉(需要的信息),经过处理(数据清洗、存储)变成蜂蜜(可用的数据)。

1.处理不同格式的数据

网络数据采集大有所为。在大数据深入人心的时代,网络数据采集作为网络、数据库与机器学习等领域的交汇点,已经成为满足个性化网络数据需求的最佳实践。搜索引擎可以满足人们对数据的共性需求,即“所见即所得”,而网络数据采集技术可以进一步精炼数据,把网络中杂乱无章的数据聚合成合理规范的形式,方便分析与挖掘,真正实现“通过数据进行分析”。工作中,你可能经常为找数据而烦恼,或者眼睁睁看着眼前的几百页数据却只能长恨咫尺天涯,又或者数据杂乱无章的网站中满是带有陷阱的表单和坑爹的验证码,甚至需要的数据都在网页版的 PDF 和网络图片中。而作为一名反爬虫工程师,你也需要了解常用的网络数据采集手段,以及常用的网络表单安全措施,以提高网站访问的安全性,所谓道高一尺,魔高一丈...(所以对于爬虫工程师来说每天都是不停地和对方的反爬工程师斗智斗勇,这个改天再唠...)

扯得有点远 ,我们言归正传,网络数据采集之前我们先了解一下怎么对不同格式的数据进行处理...

1.处理CSV格式数据

1.下载数据

数据来源:http://data.stats.gov.cn/easyquery.htm?cn=C01

下载CSV格式

2.处理数据

显示数据
通过python处理csv数据

注意:处理Excel格式、Json格式数据数据也类似,分别使用Pandas中的read_excel()方法和read_json()方法。

3.处理XML格式数据

2.网络爬虫

这部分由于之前写过,这里就不再进行详细写了,可以参考往期文章。

3.小试牛刀

说了那么多理论性的东西,接下来就开始步入正轨了。


chrome右键检查查看network这些套路我就不说了,直接放图开始分析。

1.获取腾讯新闻首页新闻标题及链接,并以Excel形式存储

import requests
import pandas
from bs4 import BeautifulSoup

res = requests.get('https://news.qq.com/')  # 数据采集目标地址
soup = BeautifulSoup(res.text, 'html.parser') # 解析网页

newsary = []   # 定义空列表
for news in soup.select('.Q-tpWrap .text'):
    newsary.append({'title': news.select('a')[0].text,
                    'url':news.select('a')[0]['href']}) # 分别获取超链接中文本信息和href属性,即地址

newdf = pandas.DataFrame(newsary) # 创建一个DataFrame
newsdf.to_excel('news.xlsx')   # 输出到excel表格
print(newsary[0]) 

2.抓取房天下房价信息并存储

获取房子对应的链接
通过获取的链接进去房子详情页面
import requests
import pandas as pd
from bs4 import BeautifulSoup
from fake_useragent import UserAgent

ua_list = UserAgent()   # 设置user-agent列表,每次请求时,随机挑选一个user-agent

my_headers = {
        'user-agent': ua_list.random
    }

# 获取所有的url
def get_url():
    num = 1
    sum_url = []
    while num < 101:
        usual_url = 'http://esf.sh.fang.com/house/i3'
        home_url = usual_url + str(num)
        print(home_url)
        res = requests.get(url=home_url, headers=my_headers)
        num+=1
        soup = BeautifulSoup(res.text, 'html.parser')
        domain = 'http://esf.sh.fang.com'
        for house in soup.select('.houseList dl'):
            try:
                # title = house.select('.title')[0].text.strip()  # 清除多余的换行
                url1 = domain + house.select('.title a')[0]['href']
                sum_url.append(url1)
            except Exception as e:
                print(e)
    print(len(sum_url))
    return sum_url


def houseary():
    houseary_url = get_url()
    houseary = []
    for url in houseary_url:
        print(url)
        content = requests.get(url=url, headers=my_headers)
        soup1 = BeautifulSoup(content.text, 'html.parser')
        try:
            info = {}
            info['标题'] = soup1.select('.title')[0].text.strip()
            info['总价'] = soup1.select('.trl-item')[0].text
            info['户型'] = soup1.select('.tt')[0].text.strip()
            info['建筑面积'] = soup1.select('.tt')[1].text
            info['单价'] = soup1.select('.tt')[2].text
            info['朝向'] = soup1.select('.tt')[3].text
            info['楼层'] = soup1.select('.tt')[4].text
            info['装修'] = soup1.select('.tt')[5].text
            info['小区'] = soup1.select('.rcont')[0].text.strip().replace('\n', '')
            info['区域'] = soup1.select('.rcont')[1].text.replace('\n', '').replace('\r', '').replace(' ', '')
            info['经纪人'] = soup1.select('.pn')[0].text
            info['联系电话'] = soup1.select('.pnum')[0].text
            houseary.append(info)
        except Exception as e:
            print(e)

    print(houseary)
    print(len(houseary))
    df = pd.DataFrame(houseary)
    df.to_excel('house.xlsx')


if __name__ == '__main__':
    houseary()

后台运行程序,经过半个小时的战绩,总算把数据爬下来了,这个效率我觉得是时候学一波分布式爬虫了...


看了数据,上海的房价无力吐槽...

拿到了数据,我们就该做数据的清理了,下一阶段数据的清理、资料探索与资料视觉化...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268