最容易上手的爬虫项目
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管理器。
以上是关于最容易上手的爬虫项目的主要内容,如果未能解决你的问题,请参考以下文章