1.爬虫目的
用通俗易懂的话来说,是对多种类型数据(如文字,图片,音频,视频等)进行批量式的采集与存储。
本文为个人一些学习心得,举例对网页进行信息爬取操作,使用python中基础的方法进行爬取,便于理解学习。

2.爬虫准备
需要对python有一些基础,对字符串,列表,循环结构等有了解。需要对HTML语言有一些了解,能看懂结构即可。

3.爬虫流程
选取目标数据源(以网站为例)→向目标网站发起网络请求→获取目标的响应数据→对信息进行选取→利用表达式或方法(如正则表达式,xpath方法等)进行信息匹配→获得信息并储存

4.调用模块概要
4.1 request模块是用于模拟浏览器向目标网址发送网络请求并获得响应数据的模块。
4.2 lxml模块是XML和HTML的解析器,其主要功能是解析和提取XML和HTML中的数据。
其中的etree函数,主要可以用来解析XML字符串,也是基础的解析方法。

5.爬取实例
刚开始学习爬虫时,厌倦了一成不变的桌面壁纸,于是便找到一个小众的壁纸网站Awesome Wallpapers - wallhaven.cc,想大量爬取图片来更换桌面壁纸,算是一些个人的兴趣爱好了,以下是我的代码实现,注释较为详细。

6.爬取成果

# 导入模块
from lxml import etree
import requests
import os# 创建文件夹
if not os.path.exists('./wallhaven_picture'):os.mkdir('./wallhaven_picture')# 准备参数(进行UA伪装)
# 为了防止恶意访问造成网站损失,大部分网站都有设置有反爬机制
# UA伪装即伪装成浏览器来获取数据,以免遭到反爬机制拦截
headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.4281.147 Safari/532.36 Edg/87.0.632.15'}# 爬取热门标签
# request的get方法能帮助我们模拟对网站发起请求
# request的get方法有几个参数,这里使用了url即目标网站;headers即用于伪装的身份信息
# etree用于接收目标网站的反馈数据,为此实例化一个tree的对象,到此完成获取目标网站的全部数据
# xpath是用于在全部信息中找到我们所需要的信息,如文字,图片等等(也可以使用正则表达式等)
# xpath方法中定位信息需要简单看懂HTML的结果与其中包含的标签信息,这里不赘述
# tips:csdn中有很多大佬讲解的HTML语音与结构,可以打开一个网页按F12去试着定位信息
# tips:在定位到需要的信息是,可以右击复制xpath路径能帮助去更好去理解结构
url_tag = 'https://wallhaven.cc/tags/popular'
# 对标签页发起网络请求
response = requests.get(url=url_tag, headers=headers)
# 实例化标签页数据
tree = etree.HTML(response.text)
# 爬取所有标签信息
tag_list = tree.xpath('//div[@class="taglist-tagmain"]/span[@class="taglist-name"]')
print('---------------当前热门标签---------------')
for n in tag_list:# 爬取标签名称tag_name = n.xpath('./a/text()')[0]# 爬取标签原IDtag_id = n.xpath('./a/@href')[0]# 裁剪标签IDtag_num = tag_id.split('/tag/')[-1]print('标签:', tag_name)print('ID:', tag_num)
print('---------------华丽的分割线---------------')# 爬取图片
# 爬取图片的过程与上面获取标签页的步骤一致,最后将图片存储到本地文件夹
id_value = input('键入标签ID获取图片:')
print('---------------爬取图片开始---------------')
for k in range(10):url_img = 'https://wallhaven.cc/search?q=id%3A'+id_value+"&page="+str(k+1)response = requests.get(url=url_img, headers=headers)  tree = etree.HTML(response.text)  # 爬取所有图片信息img_list = tree.xpath('//div/section[1]/ul/li')for i in img_list:# 爬取图片原IDimg_id = i.xpath('./figure/@data-wallpaper-id')[0]# 剪裁图片IDimg_num = img_id[:2]# 拼接图片地址,这里得到完整的目标图片路径img_url = 'https://w.wallhaven.cc/full/' + img_num + '/wallhaven-' + img_id + '.jpg'img_data = requests.get(url=img_url, headers=headers)img_choose = etree.HTML(img_data.text)# 爬取图片特征信息img_chosen = img_choose.xpath('/html/body/center[1]/h1/text()')# 对图片进行特征判断,图片主要为JPG与PNG的格式,这里进行分支判断# JPG图片处理if img_chosen == ['404 Not Found']:img_url = 'https://w.wallhaven.cc/full/' + img_num + '/wallhaven-' + img_id + '.png' # 对图片发起网络请求img_data = requests.get(url=img_url, headers=headers)# 以PNG形式保存图片with open('./wallhaven_picture/{}.png'.format(img_id), 'wb') as png:png.write(img_data.content)print(img_url, '下载完毕')# JPG图片处理else:# 以JPG形式保存图片with open('./wallhaven_picture/{}.jpg'.format(img_id), 'wb') as jpg:jpg.write(img_data.content)print(img_url, '下载完毕')

6.爬取成果

7.个人体会

在学习一门新的应用为主的技能时,个人认为实践才是较快的学习方法,进行实操时,去运用并熟练。多多学习其他大佬的经验,毕竟站在巨人的肩膀上才能看的更远,也祝大家学有所成。

【python】基础网络爬虫教程相关推荐

  1. python 基础 网络爬虫 day05

    目录 1.json模块 2.动态网站数据抓取 - Ajax 3.selenium + phantomjs 强大的网络爬虫组合 day04 lxml解析库 使用流程 from lxml import e ...

  2. 【OpenCV图像处理入门学习教程六】基于Python的网络爬虫与OpenCV扩展库中的人脸识别算法比较

    OpenCV图像处理入门学习教程系列,上一篇第五篇:基于背景差分法的视频目标运动侦测 一.网络爬虫简介(Python3) 网络爬虫,大家应该不陌生了.接下来援引一些Jack-Cui在专栏<Pyt ...

  3. python网络爬虫教程(四):强大便捷的请求库requests详解与编程实战

    上一章中,我们了解了urllib的基本用法,详情可浏览如下链接python网络爬虫教程(三):详解urllib库,但其中确实有不方便的地方,为此,我们可以使用更方便更简洁的HTTP请求库request ...

  4. python爬虫教程:Python写网络爬虫的优势和理由

    在本篇文章里小编给各位整理了一篇关于选择Python写网络爬虫的优势和理由以及相关代码实例,有兴趣的朋友们阅读下吧. 什么是网络爬虫? 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页 ...

  5. python网络爬虫_python小知识,基于Python 的网络爬虫技术分析

    在现阶段大数据的时代中,想要实现对数据的获取和分析,要先具备足够的数据源,网络爬虫技术就为其数据获取提供了良好的条件,且还能够实现对数据源的目的性采集. 在网络爬虫技术应用中,Python 脚本语言的 ...

  6. Python:网络爬虫入门

    Python:网络爬虫入门 这只是一个最最最基础版本的Python爬虫入门,代码是我两年前写的,最近两天没事翻出来再写(shui)一篇博客.就是爬取王者荣耀英雄的皮肤.然后备注也是写的十分的详细,所以 ...

  7. python六小时网络爬虫入门_一小时入门 Python 3 网络爬虫

    原标题:一小时入门 Python 3 网络爬虫 作者:Jack-Cui,热爱技术分享,活跃于 CSDN 和知乎,开设的<Python3网络爬虫入门>.<Python3机器学习> ...

  8. 网页爬虫python代码_《用python写网络爬虫》完整版+源码

    原标题:<用python写网络爬虫>完整版+源码 <用python写网络爬虫>完整版+附书源码 本书讲解了如何使用Python来编写网络爬虫程序,内容包括网络爬虫简介,从页面中 ...

  9. Python即时网络爬虫项目: 内容提取器的定义(Python2.7版本)

    1. 项目背景 在Python即时网络爬虫项目启动说明中我们讨论一个数字:程序员浪费在调测内容提取规则上的时间太多了(见上图),从而我们发起了这个项目,把程序员从繁琐的调测规则中解放出来,投入到更高端 ...

最新文章

  1. [转]优秀编程的“艺术”
  2. FPGA逻辑设计回顾(12)RAM以及ROM的RTL设计及其验证
  3. Codeforces Gym 100342J Problem J. Triatrip 求三元环的数量 bitset
  4. Log4j MDC Tomcat下报异常org.apache.log4j.helpers.ThreadLocalMap
  5. [Nginx]nginx 配置实例-负载均衡
  6. c语言实验转换字母顺序结构,实验1顺序结构的程序设计-实验报告.doc
  7. 问题 L: 求一元二次方程的根
  8. lib、dll文件的中函数的查看与lib、dll、pdb文件的介绍
  9. 福昕PDF阅读器 Foxit PDF Reader 中文绿色版
  10. private111
  11. php的tips(mysql语句union等问题)
  12. 猫哥说创业:发布软文赚钱术(1)
  13. 解决:Excel打开文件,内容不显示
  14. 图形学基础|球谐光照(Spherical Harmonics Lighting)
  15. java打印数组的连续非空子集_Apriori算法求数组的非空子集java代码
  16. Android茫茫半年求职路,终于斩获三个大厂offer,我总结了24家大厂100份面试题
  17. 如何做好固定资产管理和盘点?切实可行的方案来了
  18. 美国Linux服务器系统内核的详细介绍
  19. python生成10个随机密码_python生成随机密码
  20. 【SQL Server】统计表记录数

热门文章

  1. redmibook螃蟹网卡信号差问题
  2. 什么是Debian?
  3. 计算机计算用函数平均分,excel表格中数据怎样算均分-excel里如何使用IF函数挑出数值算平均分啊...
  4. Android API与系统版本的关系
  5. var/let/const、块级作用域、TDZ、变量提升
  6. web全栈工程师技能介绍
  7. 半桥llc 增益 matlab程序,【我已收藏】很完整的LLC谐振半桥电路分析与计算
  8. 【k8s-5】kubeadm init过程的错误
  9. 在线客服系统解决方案:物流行业
  10. php opcode修改,PHP配置文件缓存opcode设置步骤