通过实例了解:python如何从爬虫爬取到的字符串中提取信息——重在思路

问题

知乎上看到一个问题,python如何从字符串中提取信息?
回答了一下,在这里分享出来。
原问题:
问题
问题

解答

原文链接:https://www.zhihu.com/answer/2620890788

粗糙解答,分享通过解决问题学习的过程,欢迎指正

仔细阅读问题描述,作为一个结果主义者,我肯定是选择更简单的方法,虽说正则表达式无所不能,但我这个小菜鸡怎么可能完全掌握呢,都是需要用时才去查,而对于这个问题,我觉得,只用一个函数足矣。
那就是:str.split(str="", num=string.count(str))
参数解释:
str:分隔符。默认为所有的空字符,包括空格、换行(\n)等。
num:分割次数。默认为 -1, 意思是分隔所有。

代码如下:

# 将原始字符串赋值给str并打印
str = 'Linux操作系统/(1-2节)1-7周(单)/王某某/20大数据11;20大数据12/必修/教学班人数:55/无/8/48\n网页样式/(1-2节)10-16周/苏某/20网络41/必修/教学班人数:63/无/8/56\n移动应用开发基础/(1-2节)17周/张某/20移动51;20移动52/必修/教学班人数:64/无/8/80'
print ('原始字符串是:',str)
# 根据换行符分割原始字符串,将值赋值给列表并打印
list = str.split('\n')
print(list)
# 定义字典dict
dict = {}
# 将列表中每个元素以’/‘为准进行分割,将其值存入字典,其中字典的键我用数字表示,方便后面对其元素进行操作
for i in range(len(list)):
    dict[i] = list[i].split('/')
# 打印字典
print(dict)
# 保留需要的数据,也就是删除无用数据
for i in range(len(dict)):
    # 注意:删除的应该是原来字典的每个元素(列表)中的1,4,6,7(从0开始)号元素,但由于我们删除一个之后,列表更新,后面的序号就向前进一位。
    # 因此,需要删序号为[1],[4-1],[6-1-1],[7-1-1-1]的元素
    del dict[i][1],dict[i][3],dict[i][4],dict[i][4]
print(dict)
# 之后,就可以根据您的需要给第一步的str赋值,直接对字典操作取值了。
# 对您所表述的这种格式的字符串都适用。

代码里面的注释详细的不能再详细了,就不做赘述了。

思路

爬虫,肯定要有数据处理,因为我们的目的是爬取数据,筛选出有用的数据,再进行数据分析,通过分析,得出结论。这是整个一个流程。
其中,爬取数据和分析数据都还可以参照别的,但爬取到的数据形态各异,要想得到有用的数据,必须对其进行提取处理,而最牛的莫过于正则表达式了,但是,并不是人人都是正则大佬,我们只要能解决问题便好,管他黑猫白猫,抓住老鼠的就是好猫。

因此,针对字符串,首先要考虑的应该是字符串处理的常见函数,比如:strip、split等,这些函数完全可以理解为别人写好的正则,那如果能用,谁不用谁傻。。。
哈哈哈,具体函数用法一搜一大堆,根据需求自行选用喔。

当然,在碰到复杂的,难处理的数据,正则表达式还是很牛的,就是个人觉得有yi点点难,我一般都是需要啥查啥的。

很重要的提醒:
一定要擅于用列表和字典,不要傻乎乎对着一个长长的字符串就是一顿输出,对于像这个问题中的字符串,特征是非常明显的,直接冲就完了。
这个问题的题主表达的他的困难之处就在于不知道一个字符串里究竟有几门课,那还不简单,python又没让你定义列表和字典的时候告诉它是具体有几个键、值,这玩意具体有多香,谁用谁知道。(并不是diss一下C/C++昂,人家重视内存,是精致的小姑娘,python就是一粗汉,随便拿随便用,各有所长嘛。)

如果看到这,您有一点点收获,请务必点个赞+关注呗,持续更新,共同进步!

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Godchar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值