博学谷 > 资讯 > Python > 如何使用Python爬虫抓取数据?

原创 如何使用Python爬虫抓取数据?

发布时间:2019-08-13 18:56:48 浏览 618 来源:博学谷资讯 作者:照照

    Python爬虫应用十分广泛,无论是各类搜索引擎,还是日常数据采集,都需要爬虫的参与。其实爬虫的基本原理很简单,今天小编就教大家如何使用Python爬虫抓取数据,感兴趣的小伙伴赶紧看下去吧!

     

    Python爬虫抓取数据

     

    工具安装

     

    首先需要安装Python的requests和BeautifulSoup库。我们用Requests库用抓取网页的内容,使用BeautifulSoup库来从网页中提取数据。

     

    安装python

     

    运行pip install requests

     

    运行pip install BeautifulSoup

     

    抓取网页

    完成必要工具安装后,我们正式开始编写我们的爬虫。我们的第一个任务是要抓取所有豆瓣上的图书信息。我们以https://book.douban.com/subject/26986954/为例,首先看看开如何抓取网页的内容。

     

    提取内容

     

    抓取到网页的内容后,我们要做的就是提取出我们想要的内容。在我们的第一个例子中,我们只需要提取书名。首先我们导入BeautifulSoup库,使用BeautifulSoup我们可以非常简单的提取网页的特定内容。

     

    连续抓取网页

     

    到目前为止,我们已经可以抓取单个网页的内容了,现在让我们看看如何抓取整个网站的内容。我们知道网页之间是通过超链接互相连接在一起的,通过链接我们可以访问整个网络。所以我们可以从每个页面提取出包含指向其它网页的链接,然后重复的对新链接进行抓取。

     

    准备

     

    IDE:pyCharm

     

    库:requests、lxm

     

    大概介绍一下,这俩库主要为我们做什么服务的

     

    requests:获取网页源代码

     

    lxml:得到网页源代码中的指定数据

     

    言简意赅有没有 ^_^

     

    搭建环境

     

    这里的搭建环境,可不是搭建python的开发环境,这里的搭建环境是指,我们使用pycharm新建一个python项目,然后弄好requests和lxml 新建一个项目,光溜溜的啥也没有,新建个src文件夹再在里面直接新建一个Test.py吧 。

     

    依赖库导入

     

    在Test.py中输入:

     

    import requests

    这个时候,requests会报红线,这时候,我们将光标对准requests,按快捷键:alt + enter,pycharm会给出解决之道,这时候,选择install package requests,pycharm就会自动为我们安装了,我们只需要稍等片刻,这个库就安装好了。lxml的安装方式同理.

     

    将这两个库安装完毕后,编译器就不会报红线了。

     

    取网页源代码

     

    requests可以很方便的让我们得到网页的源代码。

     

    获取源码:

     

    # 获取源码

     

    html = requests.get("https://blog.csdn.net/it_xf?viewmode=contents")

     

    # 打印源码

     

    print html.text

     

    代码就是这么简单,这个html.text便是这个URL的源码

     

    获取指定数据

     

    现在我们已经得到网页源码了,这时就需要用到lxml来来筛选出我们所需要的信息

     

    首先我们需要分析一下源码,我这里使用的是chrome浏览器,所以右键检查。

     

    然后在源代码中,定位找到第一篇 。

     

    首先点击源码页右上角的箭头,然后在网页内容中选中文章标题,这个时候,源码会定位到标题这里,

     

    这时候选中源码的标题元素,右键复制。

     

    得到xpath,它相当于地址。比如网页某长图片在源码中的位置。

     

    表达式://*[@id="mainBox"]/main/div[2]/div[1]/h4/a

     

    首先,//表示根节点,也就是说啊,这//后面的东西为根,则说明只有一个啊。我们需要的东西,在这里面。

     

    然后/表示往下层寻找,根据图片,也显而易见,div -> main -> div[2] -> div[1] -> h4 -> a

     

    追踪到a这里,然后我们在后面加个/text,表示要把元素的内容提取出来,所以我们最终的表达式长这样:

     

    //*[@id="mainBox"]/main/div[2]/div[1]/h4/a/text()

     

    这个表达式只针对这个网页的这个元素,不难理解吧?

     

    那么这个东西怎么用呢?

     

    所有代码:

     

    import requests

     

    from lxml import etree

     

    html = requests.get("https://blog.csdn.net/it_xf?viewmode=contents")

     

    # print html.text

     

    etree_html = etree.HTML(html.text)

     

    content = etree_html.xpath('//*[@id="mainBox"]/main/div[2]/div[1]/h4/a/text()')

     

    for each in content:

     

    print(each)

     

    这时候,each里面的数据就是我们想要得到的数据了

     

    打印结果:

     

    如何撸一个ArrayList

     

    打印结果却是这个结果,我们把换行和空格去掉

     

    import requests

     

    from lxml import etree

     

    html = requests.get("https://blog.csdn.net/it_xf?viewmode=contents")

     

    # print html.text

     

    etree_html = etree.HTML(html.text)

     

    content = etree_html.xpath('//*[@id="mainBox"]/main/div[2]/div[1]/h4/a/text()')

     

    for each in content:

     

    replace = each.replace('\n', '').replace(' ', '')

     

    if replace == '\n' or replace == '':

     

    continue

     

    else:

     

    print(replace)

     

    打印结果:

     

    如何撸一个ArrayList

     

    用到了requests获取网页列表,用lxml筛选数据,可以看出python用来在网页上爬取数据确实方便不少,chrome也支持直接在源码中得到表达式xpath,这两个库的内容肯定不止这一点点,还有很多功能等着大家去挖掘。

     

    以上就是“如何使用Python爬虫抓取数据”的详细讲解,大家都听懂了吗?

上一篇:代码规范是什么?PEP8规范案例讲解 下一篇:学习Python能拿多少钱?哪些人适合学习Python?

相关推荐 更多

最新文章

扫描二维码,回复"Python"获取100G资料包