Anaconda python抓取数据小实践

网络数据收集方法

目前主流且合法的网络数据收集方法主要有三种:

  • 开放数据集下载;
  • API读取;
  • 爬虫抓取;

爬虫概念

维基百科:网络爬虫(Web Crawler),简称爬虫,也叫网络蜘蛛,是一种用来自动浏览万维网的网络机器人。

小实践

运行环境

Anaconda;
安装好anaconda后从https://github.com/zhaihulu/DataScience下载对应数据集并解压后,从终端用cd命令进入解压后文件夹的目录。在这里插入图片描述
进入该目录后安装包管理工具pipenv,pipenv详细功能等自行搜索。
安装命令:pip install pipenv
安装后执行命令:pipenv install
启动虚拟env:pipenv shell
最后输入:jupyter notebook
在这里插入图片描述

爬虫实现

爬取目标网页:https://www.jianshu.com/p/85f4624485b9
要求:提取文中各个教程链接和链接名称并导出到excel。
知识储备:HTML CSS 数据结构等。
代码(jupyter notebook平台):

!pip install requests_html  #安装requests_html库
from requests_html import HTMLSession
import pandas as pd
url = 'https://www.jianshu.com/p/85f4624485b9'
sel = '._2rhmJa > p > a:nth-child(1)'#所需数据的标签路径
def get_link_text(sel):
    mylist = []
    try:
        results = r.html.find(sel)
        for result in results:
            mytext = result.text
            mylink = list(result.absolute_links)[0]
            mylist.append((mytext,mylink))
        return mylist
    except:
        return None
df = pd.DataFrame(get_link_text(sel))
df.columns = ['text','link']  #修改列名
df.to_csv('output.csv',encoding='gbk',index=False)#导出为csv文件,csv可以用excel打开,指定编码gbk,因为utf-8可能乱码

注:如何准确定位需要的数据位置?

也就是怎么找到上面代码中的sel:我用的是火狐。
鼠标右击->检查->选中某个链接->复制:CSS选择器
要抓取多个链接,每个链接的标签路径不一样,何如?——对比!
找了其中两个路径:
._2rhmJa > p:nth-child(40) > a:nth-child(1)
._2rhmJa > p:nth-child(37) > a:nth-child(1)

对比一下发现只有p标签后面内容稍有不同,因此可以尝试不指定具体的p,得出最终标签路径:
._2rhmJa > p > a:nth-child(1)

参考书:
《数亦有道:python数据科学指南》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值