python爬取网页链接和静态文件链接_Python抓取静态网页内容

作者:音子,微信公众号:自在不思量,转载请注明出处。

断断续续学了Python一年左右,依然处在入门阶段……

对于大部分人来说,XXX从入门到精通,学着学着都变成了XXX从入门到放弃,我可能也是这个结局……但不希望是现在。

所以,开始我的第一个小小小项目——用Python抓取静态网页内容。(也不知道能不能称之为一个项目)

网页我选了自己之前发的一篇公众号文章:送给自己的负能量段子​mp.weixin.qq.com

我想要达到的结果是,将网页中的内容按顺序存入表格中,如下图:

然后我用了26行代码实现了这个结果……

本来22行就可以的,但是微信公众号文章的网址真是太长了,一个网址占了5行……

下面讲讲实现的过程。

导入模块

首先,需要导入需要用到的模块,「导入模块」使用的语句为 import 或 from...import :

import 模块名:导入一个模块,相当于导入的是一个文件夹。在调用它时,需要使用:模块名.函数名

from 模块名 import 函数名:导入一个模块中的一个函数,相当于导入了一个文件夹中的一个文件。当调用它时,可以直接使用 函数名。

导入的4个Python模块分别为:

① requests模块

作用:发送网络请求,返回响应数据。

② bs4模块

作用:对HTML格式进行分析,将复杂HTML文档转换为清晰的树形结构,配合requests库可以用于简单的爬虫。

③ re模块

作用:提供对正则表达式的支持。正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。

④ csv模块

作用:csv文件格式是一种常用的文本格式,用以存储表格数据,包括数字或者字符。csv模块提供了常用的读写等功能。

新建文件

导入完模块以后,需要新建一个csv文件用于存储将要获取的数据。

这里使用了 open 语句来新建/打开文件,当要打开的文件“段子.csv”不存在时会自动新建一个以"段子"命名的csv文件。

用到的csv模块两个函数分别为:

csv.writer() 用于写入csv文件数据,返回一个对象。

writerow() 按行写入数据,一次写入一行。

获取网页内容,并写入文件

使用 requests.get方法发送网络请求,获取指定网页的内容。

获取到html文档后,可以使用 print 语句查看一下内容,如下图所示:

然后,使用 bs4 模块中的 BeautifulSoup 函数,分析该html文档,并将其转换为树形结构,每一个节点都可以作为一个对象。

接下来,在文档中搜索我想要获取到的内容,分析它们出现的规律,确定匹配规则,即正则表达式。

(\d{2})

(.*?)
这个表达式中,括号()中的内容为我需要的结果,这里获取了两部分内容,分别为序号和对应的句子。

同样的,可以使用 print 语句查看下匹配后的结果是否符合预期,如果不能正确匹配则需要对正则表达式进行调整。

使用 type 函数可以查看匹配后的结果是一个列表,使用 len 函数可以看到这个列表中有35个元素,最后输出整个列表进行查看。

接下来,可以使用 for 循环遍历列表。

可以查看到列表中的每一个元素都是元组类型,每个元组中有2个元素。

在查看内容时可以发现,列表中序号的匹配结果对应每个元组中的第一个元素,完全满足需求,但句子的匹配部分 < > 中的内容是无效的、不需要的。所以,需要进一步处理。

使用 re 模块中的 sub 函数,将格式为 的内容全部替换为空值,等同于删除无效字符。

将序号赋值给 num ,将替换后的句子(字符串)赋值给 word ,使用 print 输出最终结果如下图所示:

最后,确认匹配内容符合预期且无遗漏后,将它们按行依次写入文件“段子.csv”中。

整段代码编辑完成。运行它,获取的数据将写入csv文件,该文件自动存储的位置与代码文件所在位置相同,在同一个文件夹下:

在实践中遇到的几个问题

1、使用 requests 模块时,get 只是其中一种方式,其他的方式如 post ,与 get 有什么区别?

2、bs4 模块中 BeautifulSoup 的具体作用和使用方法是什么?

3、新建 csv 文件时,用到的 open 语句的参数有多个,它们分别起到什么作用?

4、Python中正则表达式如何写?数字、字母、字符等分别用什么表示?

这些问题将在下一篇解答。(或者下下篇……)

本文【抓取静态网页】代码分享地址

链接:

https://pan.baidu.com/s/1Ne6337bZu6y1xsHxv43QcA

提取码:

sagb

----------------- End -----------------

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值