首页/默认分类/正文
Python爬虫教程:简单六步教你快速掌握数据爬取技巧

 2025年03月27日  阅读 3

摘要:使用[爬虫]来爬取数据是很简单的事情。只要掌握以下六步就可以了,并且也不复杂。之前一直以为爬虫很难,然而一旦开始动手操作,从刚开始学习到成功把东西爬下来,仅仅一个小时不到就能够完成。爬出六部曲第一步:安装库和库:在程序中两个库的书写是这样的:impo...

使用[爬虫]来爬取数据是很简单的事情。只要掌握以下六步就可以了,并且也不复杂。之前一直以为爬虫很难,然而一旦开始动手操作,从刚开始学习到成功把东西爬下来,仅仅一个小时不到就能够完成。

爬出六部曲 第一步:安装库和库:

在程序中两个库的书写是这样的:

 import requests
from bs4 import BeautifulSoup

我使用的是进行编程,所以来讲讲在上安装这两个库的方法。首先在主页面文件选项下找到设置,接着找到项目解释器,然后在所选框中点击软件包上的+号,就可以进行查询插件安装了。有过编译器插件安装经验的 hxd 估计会比较好入手,具体情况如下图所示。

第二步:获取爬虫所需的和:

我写了一个能够爬取微博热搜的爬虫程序,现在就以它为例来进行说明。获取信息和定位网页位置是一个爬虫程序必须具备的能力,因为这直接决定了爬虫程序能否准确地找到网页位置并进行爬取。

进入微博热搜的页面后,按下 F12 ,此时会出现网页的 js 语言设计部分。(如下图所示)接着找到网页上的部分,然后按下 ctrl+R 刷新页面。如果有文件信息,就无需刷新,即便刷新也没什么问题。之后,我们浏览 Name 这部分,找到想要爬取的文件,用鼠标右键选择 copy ,复制下网页的 URL 。(如下图所示)

复制好 URL 之后,我们会进入一个名为“curl to code”的网页。这个网页具备这样的功能,它能够依据你所复制的 URL,自动生成相应的内容,就如同下面所展示的那样。生成好的内容,你直接复制走就可以了,然后粘贴到程序当中。

#爬虫头数据
cookies = {
'SINAGLOBAL' 的值为 '6797875236621.702.1603159218040'
'SUBP' 的值为 '0033WrSXqPxfM72-Ws9jqgMF55529P9D9Wh-nU-QNDs1Fu27p6nmwwiJ'
'_s_tentry' 的值为 'www.baidu.com'。
“UOR”为“www.hfut.edu.cn”“widget.weibo.com”“www.baidu.com”
'Apache' 的值为 '7782025452543.054.1635925669528'
'ULV' 为 '1635925669554:15:1:1:7782025452543.054.1635925669528' 且后面接着 '1627316870256'
}
headers = {
“Connection”的意思是“保持活跃”。
“Cache-Control”的值为“max-age=0”。
'Upgrade-Insecure-Requests' 的值为 '1' 。
用户代理为:“Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36”,同时还有“SLBrowser/7.0.0.6241 SLBChan/25”。
'Accept' 的值为 'text/html'、'application/xhtml+xml'、'application/xml',其中 'application/xml' 的质量因子为 0.9,还有 'image/webp'、'image/apng' 等,它们的质量因子均为 0.8,以及 'application/signed-exchange',其质量因子为 0.9,质量因子 'q' 用于表示各种类型资源的优先级。
'Sec-Fetch-Site' 表示 '跨站点'
'Sec-Fetch-Mode' 的值为 'navigate' 。
'Sec-Fetch-User' 的值为 '?1' 。
'Sec-Fetch-Dest' 的值为 'document' 。
'Accept-Language' 为 'zh-CN' 且 'zh;q=0.9' 。
}
params = (
('cate', 'realtimehot') 可改写为:('cate'这个词),('realtimehot'这个词)
)

复制到程序中就像这样。这是微博热搜的请求头。

第三步:获取网页:

我们拿到它之后,就能够把它复制到我们的程序中。接着,通过使用请求,就可以获取到网页了。

#获取网页
使用 requests 库发送一个 GET 请求,请求的 URL 是 'https://s.weibo.com/top/summary',同时设置了请求头 headers、请求参数 params 和 cookies,将返回的响应赋值给 response 变量。

第四步:解析网页:

python赚钱门道_python 数据处理赚钱_用python赚小钱

这个时候,我们得回到网页。接着再次按下 F12 这个按键。然后去找到网页的那部分。利用左上角带有箭头的小框标志,就像下面的图那样。接着点击网页内容。在这个时候,网页就会自动在右边把你获取网页部分所对应的代码显示出来。

我们找到想要爬取的页面部分的网页代码后,把鼠标放在代码上,然后右键,复制到相应部分。就如同上图所展示的那样。

第五步:分析得到的信息,简化地址:

其实刚才复制的东西就和网页上对应部分所存放的地址是一样的。因为我们需要的是网页上的某一类信息,所以就需要对获取到的地址进行分析和提取。当然,如果仅仅使用那个地址也是可以的,只是那样只能获取到你所选择的网页上的那部分内容。

#pl_top_realtimehot 指向的表格的 tbody 中的 tr 元素的第 1 个子元素 tr:nth-child(1) 的 td 元素中的 td-02 类的 a 元素。
#pl_top_realtimehot 中的 table 里的 tbody 中的 tr 的第二个子元素 td.td-02 里的 a
#pl_top_realtimehot 中的 table 里的 tbody 中的 tr 里的第 9 个 tr 元素的 td.td-02 中的 a 元素

我获取了三条地址,能发现三个地址有很多相同之处,唯一不同的是 tr 部分。因为 tr 是网页标签,其后面部分是补充的,即子类选择器。由此可推断,该类信息存储在 tr 的子类中,我们直接对 tr 进行信息提取,就能获取到该部分对应的所有信息。所以提炼后的地址为:

语言风格需保持原文风格,去掉最前面的序号,将长句拆分成多个小分句,分句越短越好。具体来说,就是要对给定的内容进行改写,避免使用原文用过的词语,可对句子结构和用词进行调整、充实,以达到差异最大化,同时要保留原意,禁止修改专有名词,禁止穿插英文单词,只给出改写结果。

对于有一定 js 类语言知识的 hxd 来说,这个过程可能会更好处理。然而,即便没有 js 类语言基础也无妨,主要的步骤就是保留相同部分,慢慢尝试,最终总能做对。

第六步:爬取内容,清洗数据

这一步完成之后,我们便能够直接进行数据爬取了。将上面提炼出的类似地址的东西用一个标签来存储。通过这个标签,就可以拉取到我们想要获取的网页内容。

#爬取内容
语言风格需保持原文风格,去掉最前面的序号,将长句拆分成多个小分句,分句越短越好。具体内容为“#pl_top_realtimehot > table > tbody > tr > td.td-02 > a”。

之后我们要对 soup 和 text 进行过滤,把不必要的信息去除,例如 js 类语言。通过这种方式,排除这类语言对信息受众阅读造成的干扰,从而成功地将信息爬取下来。

打开文件“./微博热搜.txt”,以追加模式“a”打开,编码设置为“utf-8”,并将文件对象赋值给变量 fo 。
a=soup.select(content)
for i in range(0,len(a)):
    a[i] = a[i].text
    fo.write(a[i]+'\n')
fo.close()

我将数据存储到了文件夹里,这样就会有写的操作。至于数据要保存在何处,以及如何使用,就由读者自己决定了。

爬取微博热搜的代码实例以及结果展示:

import os
import requests
from bs4 import BeautifulSoup
#爬虫头数据
cookies = {
    'SINAGLOBAL': '6797875236621.702.1603159218040',
    'SUB': '_2AkMXbqMSf8NxqwJRmfkTzmnhboh1ygvEieKhMlLJJRMxHRl-yT9jqmg8tRB6PO6N_Rc_2FhPeZF2iThYO9DfkLUGpv4V',
    'SUBP': '0033WrSXqPxfM72-Ws9jqgMF55529P9D9Wh-nU-QNDs1Fu27p6nmwwiJ',
    '_s_tentry': 'www.baidu.com',
    'UOR': 'www.hfut.edu.cn,widget.weibo.com,www.baidu.com',
    'Apache': '7782025452543.054.1635925669528',
    'ULV': '1635925669554:15:1:1:7782025452543.054.1635925669528:1627316870256',
}
headers = {
    'Connection': 'keep-alive',
    'Cache-Control': 'max-age=0',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.6241 SLBChan/25',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'Sec-Fetch-Site': 'cross-site',
    'Sec-Fetch-Mode': 'navigate',
    'Sec-Fetch-User': '?1',
    'Sec-Fetch-Dest': 'document',
    'Accept-Language': 'zh-CN,zh;q=0.9',
}
params = (
    ('cate', 'realtimehot'),
)
#数据存储
fo = open("./微博热搜.txt",'a',encoding="utf-8")
#获取网页
response = requests.get('https://s.weibo.com/top/summary', headers=headers, params=params, cookies=cookies)
#解析网页
response 的编码为 'utf-8'。
使用 'html.parser' 对 response.text 进行解析,得到的结果赋值给 soup 。
#爬取内容
content="#pl_top_realtimehot > table > tbody > tr > td.td-02 > a"
#清洗数据
a=soup.select(content)
for i in range(0,len(a)):
    a[i] = a[i].text
    fo.write(a[i]+'\n')
fo.close()

关于技术储备

学好的话,无论是用于就业还是做副业赚钱都很不错。不过,要想学好,还是需要有一个学习规划。最后,大家分享一份全套的学习资料,给那些想要学习的小伙伴们提供一些帮助。

朋友们若需要这份完整的资料,可通过微信扫描下方 CSDN 官方认证二维码来免费领取,此领取方式保证 100%免费。

一、学习大纲

对所有方向的技术点进行整理,从而形成各个领域的知识点汇总。其用处在于,你能够依据上面的知识点去寻找对应的学习资源,以此确保自己学习得较为全面。

二、必备开发工具

三、入门学习视频

四、实战案例

光学理论本身并无实际用处,我们需要学会动手实践,跟着一起进行操作。只有通过实际动手,才能将所学的光学理论运用到实际中去。在这个过程中,我们可以寻找一些实战案例来进行学习。

五、副业兼职与全职路线

CSDN 提供大礼包,包含《兼职资源&全套学习资料》,并且可以免费分享,此链接安全,可放心点击。

版权声明:本文为 “博览广文网” 原创文章,转载请附上原文出处链接及本声明;

原文链接:http://wen.bjhwtx.com/post/13081.html

标签:

天狐多媒体CMS

Z-Blog既是博客程序,也是CMS建站系统,已走过十余年风雨的系统,一次购买,永久免费升级更新。
热门标签
关于我们
Zblog应用中心有大量的插件和模板,其功能强大,只要会一点HTML+CSS+JS,就可以轻而易举地制作出美观的模板。集成Z-Blog应用中心功能,可以简单地从后台下载你想要的主题模板和插件。
扫码关注
联系方式
全国服务热线:0755-888866601
Q Q:888866602
Email:wx888866603@qq.com
地址:深圳市南山区海雅缤纷国际大厦04
Copyright 云天市蓝天科技有限公司 版权所有 备案号:粤ICP备98989988号