我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python3 爬虫快速入门攻略

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python3 爬虫快速入门攻略





1、定义:网络爬虫(Web Spider),又被称为网页蜘蛛,是一种按照一定的规则,自动地抓取网站信息的程序或者脚本。
2、简介:网络蜘蛛是一个很形象的名字。如果把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页,从 网站某一个页面开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。
3、爬虫流程:①先由urllib的request打开Url得到网页html文档——②浏览器打开网页源代码分析元素节点——③通过Beautiful Soup或则正则表达式提取想要的数据——④存储数据到本地磁盘或数据库(抓取,分析,存储)


二、上代码,直接看注释


开发环境:Win10+Python 3.6.1 64bit+PyCharm,自学Python 3爬虫时的备忘笔记。


1、爬取简书网站首页文章的标题和文章链接
from urllib import request
from bs4 import BeautifulSoup            #Beautiful Soup是一个可以从HTML或XML文件中提取结构化数据的Python库

#构造头文件,模拟浏览器访问
url="http://www.jianshu.com"
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
page = request.Request(url,headers=headers)
page_info = request.urlopen(page).read().decode('utf-8')#打开Url,获取HttpResponse返回对象并读取其ResposneBody

# 将获取到的内容转换成BeautifulSoup格式,并将html.parser作为解析器
soup = BeautifulSoup(page_info, 'html.parser')
# 以格式化的形式打印html
#print(soup.prettify())

titles = soup.find_all('a', 'title')# 查找所有a标签中class='title'的语句

'''
# 打印查找到的每一个a标签的string和文章链接
    for title in titles:
        print(title.string)
        print("http://www.jianshu.com" + title.get('href'))   
'''

#open()是读写文件的函数,with语句会自动close()已打开文件
with open(r"D:\Python\test\articles.txt","w") as file:       #在磁盘以只写的方式打开/创建一个名为 articles 的txt文件
    for title in titles:
        file.write(title.string+'\n')
        file.write("http://www.jianshu.com" + title.get('href')+'\n\n')
结果:


2、爬取知乎网站的美女图片链接,并保存到本地
from urllib import request
from  bs4 import BeautifulSoup
import re
import time

url = "https://www.zhihu.com/question/22918070"
html = request.urlopen(url).read().decode('utf-8')
soup = BeautifulSoup(html,'html.parser')
#print(soup.prettify())

#用Beautiful Soup结合正则表达式来提取包含所有图片链接(img标签中,class=**,以.jpg结尾的链接)的语句
links = soup.find_all('img', "origin_image zh-lightbox-thumb",class="lazy" data-src=re.compile(r'.jpg$'))
print(links)

# 设置保存图片的路径,否则会保存到程序当前路径
path = r'D:\Python\test\images'                            #路径前的r是保持字符串原始值的意思,就是说不对其中的符号进行转义
for link in links:
    print(link.attrs['class="lazy" data-src'])
    #保存链接并命名,time.time()返回当前时间戳防止命名冲突
    request.urlretrieve(link.attrs['class="lazy" data-src'],path+'\%s.jpg' % time.time())  #使用request.urlretrieve直接将所有远程链接数据下载到本地
结果:




三、学习总结

     大概学习了下通过urllib和Beautiful Soup 进行简单数据爬取的流程,但是那只适用于一些简单的、数据量比较小的爬虫项目,如果需要爬取的数据量比较大的话,之前的方法必定非常缓慢,而且还可能遇到大规模爬虫IP被网站封禁的情况,因为好的网站会有反爬虫策略。多线程和分布式爬虫、
IP代理、处理验证码、模拟登陆、内置浏览器引擎爬虫,还有注意配合反爬虫措施比较少的移动APP端抓取(抓包工具Fiddler)等等问题。
      考虑成熟框架Scrapy,Scrapy 百度百科
     

四、参考资料

1、Python3 爬虫学习笔记
2、Python3 教程|菜鸟教程
3、PyCharm最新2017激活码

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python3 爬虫快速入门攻略

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python3 爬虫快速入门攻略

1、定义:网络爬虫(Web Spider),又被称为网页蜘蛛,是一种按照一定的规则,自动地抓取网站信息的程序或者脚本。2、简介:网络蜘蛛是一个很形象的名字。如果把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通
2023-01-31

Python3快速入门

Python3快速入门Python3快速入门(一)——Python简介https://blog.51cto.com/9291927/2385592Python3快速入门(二)——Python3基础https://blog.51cto.com
2023-01-31

python3 爬虫 零基础快速上手(爬

(补1:由于csdn页面重构了,看到有很多人浏览,特地更新一下获取内容补充的字都为绿字)Python是一种面向对象的解释型计算机程序设计语言,类似c,java ,php,JavaScript一种语言,比如,完成同一个任务,C语言要写1000
2023-01-31

python3.x 快速入门

Edit the > 2018/6/15 11:26:53 1认识Python人生苦短,我用python - 优雅,明确,简单 是python设计哲学 - python的设计目标之一, 是让代码具备高度的可阅读性 - python 被广泛用
2023-01-31

Python3快速入门——(3)dict

#先回忆下列表的操作animals=["cat","dog","rabbit"] #找到list中的某个值(第一种方法)for animal in animals: if(animal=="cat"):
2023-01-31

Python3快速入门(四)——Pyth

一、Python包简介1、包Python中使用包管理模块,包通常对应一个目录,必须在目录下创建一个init.py模块,init.py模块的模块名称即为包名,Python才会将目录解析为包。init.py文件内可以定义初始化包的内容,导入包的
2023-01-31

Python3快速入门(五)——Pyth

一、函数定义1、函数定义Python 定义函数使用 def 关键字,一般格式如下:def function_name(parameter_list): pass默认情况下,参数值和参数名称按函数声明中定义的顺序进行匹配。函数代码块以 
2023-01-31

Python3快速入门(一)——Pyth

一、Python简介1、Python简介Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,由荷兰Guido van Rossum于1989年底发明,第一个公开发行版于1991年发布,Python源代码遵循 GPL(GNU
2023-01-31

Python3快速入门(七)——Pyth

1、re模块简介re 模块提供 Perl 风格的正则表达式模式,使 Python 语言拥有全部的正则表达式功能。2、正则表达式模式模式字符串使用特殊的语法来表示一个正则表达式:正则表达式模式中的字母和数字匹配同样的字符串;多数字母和数字前加
2023-01-31

Python3快速入门(六)——Pyth

一、面向对象技术简介1、面向对象简介面向对象编程(Object Oriented Programing,OOP)是一种编程思想,OOP把对象当成程序的一个基本单元,一个对象包含数据和操作数据的方法。面向对象编程的三大特性如下:A、封装,可以
2023-01-31

Python3快速入门(三)——Pyth

一、Python3标准数据类型Python3 中有六种标准数据类型:A、Number(数字)B、String(字符串)C、List(列表)D、Tuple(元组)E、Set(集合)F、Dictionary(字典)Python3 的六种标准数据
2023-01-31

Python3快速入门(二)——Pyth

一、Python3语法基础1、Python3编码默认情况下,Python 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串,可以为Python源码文件指定不同的编码,如下:# -*- coding: utf-8 -*-2
2023-01-31

Python3快速入门(八)——Pyth

1、JSON简介JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,是基于ECMAScript的一个子集。2、json模块简介Python3 中可以使用 json 模块来对 JSON 数据进行编解
2023-01-31

Python3快速入门(十)——Pyth

一、socket模块简介Python 提供了两个级别访问的网络服务,低级别的网络服务支持基本的 Socket,提供了标准的BSD Sockets API,可以访问底层操作系统Socket接口的全部方法;高级别的网络服务模块 SocketSe
2023-01-31

Python3快速入门(九)——Pyth

一、Python线程模块1、线程简介一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程本身不拥有系统资源,与进程内的其它线程共享进程的所有资源。一个进程中至少
2023-01-31

Python3快速入门(十八)——PyI

一、PyInstaller简介1、PyInstaller简介PyInstaller是一个跨平台的Python应用打包工具,支持 Windows/Linux/MacOS三大主流平台,能够把 Python 脚本及其所在的 Python 解释器打
2023-01-31

Python3快速入门(十三)——Pan

一、Pandas数据结构简介Pandas有三种主要数据结构,Series、DataFrame、Panel。Series是带有标签的一维数组,可以保存任何数据类型(整数,字符串,浮点数,Python对象等),轴标签统称为索引(index)。D
2023-01-31

Python3快速入门(十五)——Pan

一、函数应用1、函数应用简介如果要将自定义函数或其它库函数应用于Pandas对象,有三种使用方式。pipe()将函数用于表格,apply()将函数用于行或列,applymap()将函数用于元素。2、表格函数应用可以通过将函数对象和参数作为p
2023-01-31

Python3快速入门(十四)——Pan

一、DataFrame IO1、CSV文件pandas.read_csv(filepath_or_buffer, na_values='NAN', parse_dates=['Last Update'])从CSV文件中读取数据并创建一个Da
2023-01-31

Python3快速入门(十六)——Mat

一、Matplotlib简介1、Matplotlib简介Matplotlib是 Python 2D-绘图领域使用最广泛的套件,可以简易地将数据图形化,并且提供多样化的输出格式。matplotlib有两个接口,一个是状态机层的接口,通过pyp
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录