一份让你嘴上MMP,心里笑嘻嘻的网爬宝典

上一篇文章我们爬取到了一整页的HTML代码,但是要从茫茫代码中找我们想要得到的那部分,无疑于大海捞针,今天的目标是爬取这一页HTML中所有的蔬菜名称、发布时间和地址。What? 你觉得人工做也很简单?来来来,感受下被代码支配的恐怖!

‍‍‍‍‍

当我看到这仅仅是冰山一角时,此刻的我

真希望我的盖世英雄能踩着七彩祥云来救我

哎,坚强的孩子通常都是要自我拯救!

‍‍那么要从这么多的代码中获得我们需要的那部分数据,就需要用到在python中,内嵌集成的re模块,直接调用该模块来实现正则匹配,从而实现将需要的数据从繁复的代码中解放出来,实现他们应有的价值。

从这张代码中我们注意到每条我们获取数据周围的HTML格式代码都是相同的,唯一不同的是数据所包含的信息,那么我们可以以这些格式代码为锚点,重复遍历各个子锚点之间的信息,以正则表达式获得这些数据,并存储在相应数组中。锚点代码如下图:

什么是

正则表达式呢?

官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

ANYWAY?是不是一头雾水,教你一招爬虫专用简单易学的正则表达式。

首先,你要知道,正则表达式是用程序明白的语言去检索,那么我们的目的是去检索所有红框标注格式下数据。本例我们使用爬虫比较通用的一种办法,.*?来表示检索所有不同的字符:相同部分我们就以正常代码形式展现,不同部分如果不是要爬取的那部分,就用.*?,需要爬取的部分就用(.*?)。

例如:

广西地区威廉斯香蕉,量大供应中

威廉斯

2018-10- 4广西区崇左市

那么改写成:

.*?

(.*?)

(.*?)(.*?)

在使用RE模块的compile函数,将正则表达式的字符串形式编译为Pattern实例。

pattern = re.compile(r'.*?

(.*?)

(.*?)(.*?)

',re.S)

最后在通过 re.findall函数使用pattern实例在HTML内容中进行检索,抓取到内容并放在数组items 中。

items = re.findall(pattern, page)

这个RE模块的函数实在是

这样一个简单的爬虫就完成了,有没有一种so easy的感觉。更多技术小TIPS,尽在金融科技应用学院,多多关注~‍

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181017A0F5T700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券