最容易上手的爬虫项目

Posted q-q56731526

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最容易上手的爬虫项目相关的知识,希望对你有一定的参考价值。

今天和大家分享一个爬取项目,那就是爬取自己博客的项目。

1、确定爬取的目标

开始之前我们需要确定一个爬取的目标,从我自己博客的首页进入。在这个例子里面我们要写一个爬虫将我的的文章列表拉出来,保存在一个JSON的文件里面。

2、“种子”的分析,生成爬虫入口

在谷歌浏览器中,打开开发者选项(F12),如图所示,这次项目主要爬取的内容有:发表日期、原文链接、文章标题以及文章摘要。

将网页中的元素选择器写到表内:

下面是对整个爬虫编程思路的整理:

3、编码

我用的是pycharm编辑器,按照上述思路进行编码。

导入必要的依赖包

from __future__ import unicode_literals
from urllib import request
from pyquery import PyQuery as pq
import json

生成种子页的HTTP请求

url = \'https://www.cnblogs.com/Ray-liang/\'
with request.urlopen(url) as response:
    body = response.read()
    item = [] #1. 先定义一个空数组,用于储存提取结果
    with open(\'output.json\', \'wt\') as f: # 2 将结果写入JSON文件
        f.write(json.dumps(items))

上面代码中用到了Python文件处理的知识,with语句是用于指定f的作用域,当f.write调用完成跳出with子句时就会被关闭,这样可以防止打开文件后忘记调用close而锁住文件导致其它的进程不能访问。

还用到了json.dumps方法,将items直接序列化成一个标准的JSON字符串,最后将这个JSON字符串通过调用file对象的write方法写入到文件内。

现在需要解决的是如何生成这个items中的对象数据?

首先,需要将body中的内容读到pyQuery中,然后选出所有的文章元素,最后通过循环每个元素来处理,将元素的值生成一个数据项填充到items中。

文章列表的选择器为.forFlow>.day,而这个选择器一旦执行会返回多个元素的集合,而且我们需要将这个元素集合转化成一个item类型的集合,所以用pyQuery.map函数完成这一转换。

根据上面的分析,代码如下:

from __future__ import unicode_literals
from urllib import request
from pyquery import PyQuery as pq
import json

url = \'https://www.cnblogs.com/q-q56731526/\'

def parse_item(i, e):
    doc = pq(e)
    title = doc(\'.postTitle>a\').text()
    parmerlink = doc(\'.postTitle>a\').attr(\'href\')
    pub_date = doc(\'.dayTitle\').text()
    summary = doc(\'.postCon\').text()
    result = 
        \'title\': title,
        \'parmerlink\': parmerlink,
        \'pub_date\': pub_date,
        \'summary\': summary
    
    print(json.dumps(result))
    return result

with request.urlopen(url) as response:
    body = response.read()
    doc = pq(body)
    items = doc(\'.forFlow>.day\').map(parse_item)
    with open(\'output.json\', \'wt\') as f:
        f.write(json.dumps(items, ensure_ascii=False))

需要说明的是,代码中map函数是一个高阶函数,它的参数是另一个处理函数的指针,所以这里引用一个parse_item,这个函数的内部实际上是一个循环,它会将doc(.’forFlow>.day’)一个个传入到parse_item函数中,当循环执行结束后再将多次从parse_item获取的结果合成为一个数组返回。

此外,在代码第一行加入 __future__模块,目的是解决json.dumps对字符内容进行unicode编码的问题,完成后就会发现在当前爬虫工作目录中会多一个名为output.json的文件,打开它后的样子是:

"title": "一站式动态ip解决爬虫烦恼", "parmerlink": "http://jshk.com.cn/mb/reg.asp?kefu=xjy(领取试用)", "pub_date": "2023年4月15日", "summary": "摘要: 人脸检测方法有许多,比如opencv自带的人脸Haar特征分类器和dlib人脸检测方法等。 对于opencv的人脸检测方法,优点是简单,快速;存在的问题是人脸检测效果不好。正面/垂直/光线较好的人脸,该方法可以检测出来,而侧面/歪斜/光线不好的人脸,无法检测。因此,该方法不适合现场应用。而对于dli阅读全文"
...

总结

设计一个完整爬虫的思路与过程是:

1、确定爬取目标,分析种子页结构

2、分析承载数据页面结构,建立数据结构与元素选择器间的映射关系

3、设计代码流程与编写思路

一个特别适合初学爬虫者的项目,感兴趣的小伙伴赶紧运行代码看看吧!

什么是Python爬虫呢?0基础能够学会吗?

Python爬虫学习难不难?大家都知道,Python是最容易上手的编程语言,如果具有一定基础的话,学习Python是非常容易的,同时Python适合零基础人员学习,更是初学者的首选。而爬虫是Python的一大应用领域,现在市场Python爬虫工程师需求量高,吸引了不少的学习者,那么学习Python爬虫难不难?何为Python爬虫?

  什么是Python爬虫呢?

  爬虫有叫做网络爬虫,可以理解为蜘蛛在网络上进行爬行,互联网是一个巨大的网络,爬虫就是行走在网络上的爬虫,遇到自己喜欢的食物,就会抓取下来,抓取网络资源。

  那么学习Python爬虫难不难?

  本身上Python就是一门比较简单的编程语言,适合零基础人员,更适合初学者学习,门槛低、功能强大;从实际情况上来说,Python爬虫是里面较为简单的课程,学习起来并不是非常困难的,简单的说,只要能在网络上看到的数据都是可以爬取的,大多数的爬虫都是通过发送请求-获取页面-解析页面-提取和存储内容来实现,实际就是用来获取网页的信息。

  Python爬虫架构组成

  1. URL管理器:管理待爬取的url集合和已爬取的url集合,传送待爬取的url给网页下载器;

  2. 网页下载器:爬取url对应的网页,存储成字符串,传送给网页解析器;

  3. 网页解析器:解析出有价值的数据,存储下来,同时补充url到URL管理器。

以上是关于最容易上手的爬虫项目的主要内容,如果未能解决你的问题,请参考以下文章

给新手推荐几个实用又适合上手的Python爬虫项目

什么是Python爬虫呢?0基础能够学会吗?

了解这几点,python爬虫技术轻松上手!

了解这几点,python爬虫技术轻松上手!

php框架哪个好用,容易上手

python爬虫框架之scrapy的快速上手 二