网络爬虫,用一句话简单总结,就是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。写这篇文章的初衷是有个知友私信我说,模仿了很多网上用Python写爬虫的例子,但到了需要自己动手写爬虫的时候又不知道怎么写了。我觉得出现这种情况还是很正常的,至少我个人是这么过来的。这篇文章仅供初学者写爬虫程序时作为一个参考,毕竟本人已经很久没写过爬虫程序了,但爬虫程序的大体框架我还是很清晰的,此篇展示的是我对爬虫的一些理解。之前写过的一些爬虫程序PythonCrawler,有兴趣的朋友可以看看,找找自信这些代码现在看来写的确实挺烂的 。

写爬虫遵循的基本框架

我自己在写爬虫时一般基本遵循下面的框架形式,按照这个框架来编写代码。

演示实例

通过对[ONE]这个网站的爬取来演示上述模块的编写,ONE网站的内容展示如下图所示。

而数据我只爬取一张图片和一句箴言,备注(该演示远非最佳实践,只是为了演示框架流程)

  • url调度模块编写

通过对ONE网站的分析,发现它的翻页就是在url后面的数字上加一进入下一页。

ROOT_URL = "http://wufazhuce.com/one/"
URL_NUM = 14 #14页之后才开始有数据def yield_url(ROOT_URL, URL_NUM):return ROOT_URL + str(URL_NUM)

  • 网页下载模块编写
import requests as rqdef get_html(url):return rq.get(url).content.decode("utf-8")

  • 数据抽取模块编写

通过对图片和箴言查看元素可知相关代码镶嵌情况。

因此可以编写数据抽取模块

import redef get_data(html):img_url_regex = re.compile('<img src="(.*?)" alt="" />')cite_regex = re.compile('<div class="one-cita">(.*?)</div>', re.S)img_url = re.findall(img_url_regex, html)[0]cite = re.findall(cite_regex, html)[0].strip()return img_url, cite                        

  • 数据存储模块编写
def save_data(img_url, cite, URL_NUM):with open("./{}.jpg".format(URL_NUM), "wb") as fp:fp.write(rq.get(img_url).content)with open("./cite{}.txt".format(URL_NUM), "w") as fp:fp.write(cite)return URL_NUM + 1

整合所有模块输出爬取结果

import re
import requests as rqROOT_URL = "http://wufazhuce.com/one/"
URL_NUM = 14def yield_url(ROOT_URL, URL_NUM):return ROOT_URL + str(URL_NUM)def get_html(url):return rq.get(url).content.decode("utf-8")def get_data(html):img_url_regex = re.compile('<img src="(.*?)" alt="" />')cite_regex = re.compile('<div class="one-cita">(.*?)</div>', re.S)img_url = re.findall(img_url_regex, html)[0]cite = re.findall(cite_regex, html)[0].strip()return img_url, cite                        def save_data(img_url, cite, URL_NUM):with open("./{}.jpg".format(URL_NUM), "wb") as fp:fp.write(rq.get(img_url).content)with open("./cite{}.txt".format(URL_NUM), "w") as fp:fp.write(cite)return URL_NUM + 1def main(ROOT_URL, URL_NUM, number):for _ in range(number):url = yield_url(ROOT_URL, URL_NUM)html = get_html(url) img_url, cite = get_data(html) URL_NUM = save_data(img_url, cite, URL_NUM)if __name__ == "__main__":try:main(ROOT_URL, URL_NUM, 20)except:pass

结果展示:

总结

本文的目的只是为了让初学者对写爬虫的大体流程有较为清晰的了解。天高任鸟飞,海阔凭鱼跃!每个人心中的爬虫框架(流程)各异,实现方法各异自由发挥空间极大,但有一点务必注意那就是遵守中华人民共和国的法律。

ctf up怎么写 write_??零基础写网络爬虫的思路??相关推荐

  1. 推荐一位零基础Python网络爬虫学习者,原来也爬虫也没有那么难

    今天给大家推荐一位软件开发工程师兼Python网络爬虫与数据分析爱好者,它是「Python爬虫与数据挖掘」公众号号主Python进阶者.他系一名软件开发工程师,在工作之余,热爱Python编程,专注于 ...

  2. 零基础写Java知乎爬虫之进阶篇

    转载自 零基础写Java知乎爬虫之进阶篇 前面几篇文章,我们都是简单的实现了java爬虫抓取内容的问题,那么如果遇到复杂情况,我们还能继续那么做吗?答案当然是否定的,之前的仅仅是入门篇,都是些基础知识 ...

  3. 纯干货!短视频脚本怎么写?零基础新手小白也能写好短视频脚本!【覃小龙课堂】

    hi,我是你的老朋友兼顾问:覃小龙,您可以叫我覃总.今天给您分享我做影视剪辑的一些经验方法,零粉丝也能做,主题名为: 纯干货!短视频脚本怎么写,零基础也能写好短视频脚本 在写脚本以前,我们首先要弄清楚 ...

  4. UI设计学习流程写给零基础学习的你

    UI设计是互联网时代的设计变革,有界面与人之间交互的时候就存在,但却没有现在这样对UI设计专业能力的重视.很多人现在学习UI设计,有的是看重UI设计月能薪破万的高薪资,有的人看重它未来大好的职业发展前 ...

  5. python写爬虫运行不了_python 打包运行不了零基础写python爬虫之爬虫的定义及URL构成...

    一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛. 网络蜘蛛是通过网页的链接地址来寻找网页的. 从网站某一 ...

  6. python爬虫教程入门-零基础入门Python爬虫不知道怎么学?这是入门的完整教程

    原标题:零基础入门Python爬虫不知道怎么学?这是入门的完整教程 这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑 ...

  7. python学起来难不难-零基础学Python爬虫难不难?要怎么学?

    零基础学Python爬虫难不难?要怎么学?众所周知,Python是最容易上手的编程语言,如果有一定基础,学会Python爬虫也是分分钟钟的事.对于零基础的学习者来说,Python爬虫也是比较简单的,只 ...

  8. 我的Go+语言初体验——(4)零基础学习 Go+ 爬虫

    我的Go+语言初体验--(4)零基础学习 Go+ 爬虫 "我的Go+语言初体验" | 征文活动进行中- Go+ 语言非常适合编写爬虫程序,具有并发机制完善.并发数量大.占用资源少. ...

  9. python零基础入门教程-零基础入门Python爬虫不知道怎么学?这是入门的完整教程...

    原标题:零基础入门Python爬虫不知道怎么学?这是入门的完整教程 这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑 ...

最新文章

  1. Redis学习笔记02--主从数据库配置
  2. Kafka入门教程(转载)
  3. xaml修改后台代码的值_Django定制后台和修改模型
  4. 学习jvm,关于MAT an internal error occurred during:Parsing heap dump from问题
  5. 大数据技术 学习之旅_如何开始您的数据科学之旅?
  6. SpringBoot(1)---SpringBoot2.0技术视频教程
  7. 风控必知必会|两大逻辑表五大基础报表
  8. 国内首款安全软件开源,金山卫士源码共享
  9. [HAOI2009]毛毛虫 树形DP
  10. wintc下为什么有getchar()但屏幕却还是没有输出?
  11. 新版Uniapp开发多端影视APP源码+对接苹果CMS
  12. 天津大学计算机学院王思宇,复杂计算精准化,天津大学选择了宝德HPC
  13. linux中yum provide,linux之yum
  14. iOS视频播放的基本方法
  15. linux系统中鼠标键盘失灵,电脑键盘失灵的原因以及解决技巧
  16. Word表格斜线怎么弄?这里有三种方法很实用
  17. JavaWeb开发技术笔记(配置篇)
  18. MacOS安装brew
  19. JAVA面向对象程序设计-FeiGe快递系统-继承III
  20. 用Opencv生成一些五颜六色的图片

热门文章

  1. ASP.NET Web API中的返回值
  2. GPCC安装以及踩坑经历
  3. sas sql 读取最后一行数据_SAS基础编程和数据处理
  4. html5的交互标签,html5里交互元素的使用方法
  5. Linux防火墙屏蔽ip6,观点|Linux 发行版们应该禁用 IPv4 映射的 IPv6 地址吗?
  6. java 安卓下载文件_GitHub - Charay/downloadfile: 使用Retrofit2+Rxjava+Rxandroid+okhttp的方式下载文件并存储到sd卡指定目录...
  7. ap接口 php_小白php API初体验 php api文档 php api接口开发 php web ap
  8. 2021年宝鸡中学高考成绩查询,宝鸡中学排名前十名,2021年宝鸡中学排名一览表
  9. 建立a8 linux开发环境,Fedora 14下建立 omap3530 开发环境 - 交叉编译器
  10. java axis2 教程_webservice的Axis2入门教程java版