php用正则表达抓取网页中文章(京东网上,狗粮信息在京东官网上的网页源码如下图)
优采云 发布时间: 2022-03-07 17:18php用正则表达抓取网页中文章(京东网上,狗粮信息在京东官网上的网页源码如下图)
京东( )是中国最大的自营电子商务公司,2015年第一季度在中国自营B2C电子商务市场的市场份额为56.3%。如此庞大的电子商务-commerce网站,上面的商品信息海量,今天小编就带小伙伴来使用正则表达式,根据输入关键词实现一个主题爬虫。
先去京东,输入你要查询的商品,小编用关键词“狗粮”作为搜索对象,然后得到如下网址:%E7%8B%97%E7%B2% AE&enc=utf-8,其实参数%E7%8B%97%E7%B2%AE就是解码后的“狗粮”的意思。所以很明显,只要输入关键字参数并进行编码,就可以得到我们的目标URL,请求一个网页,得到一个响应,然后使用选择器进行下一个精确的采集。
在京东上,京东官网狗粮信息源代码如下图所示:
京东官网狗粮信息源代码
废话不多说,直接运行代码即可,如下图所示。小编使用py3,我也建议大家以后多使用py3版本。通常URL编码的方式是将需要编码的字符转换成%xx的形式。一般来说,URL的编码都是基于UTF-8的,当然也有一些和浏览器平台有关。Python的urllib库中提供了quote方法,可以对URL的字符串进行编码,从而可以进入对应的网页。
正则表达式又称为正则表达式、正则表达式、正则表达式、正则表达式、正则表达式(英文:Regular Expression,代码中常缩写为regex、regexp或RE),是一种可以在模式中使用的强大工具用于匹配和替换。找到目标网页后,调用urllib中的urlopen函数打开网页并获取源代码,然后使用正则表达式实现准确的目标信息采集。
使用正则表达式实现准确的目标信息采集
这个程序写的正则表达式确实比较复杂,占了很多行,但是主要用到的正则表达式是[\w\W]+? 和 [\s\S]+?。
[\s\S] 或 [\w\W] 表示完全通配符,\s 表示空格,包括空格、换行符、制表符缩进等,而 \S 则正好相反。这样一正一负,就说明所有的字都是完整的,一字不差的。另外,[]符号表示其中收录的单个字符出现的顺序不限,比如下面的正则:[ace]/*,表示只要出现三个任意字母a/c/e,是匹配的。
另外,[\s]表示只要有空格,就匹配;[\S] 表示如果没有空格则匹配。那么它们的组合就是都匹配了,对应的还有[\w\W]等,意思完全一样。事实上,[\s\S] 和 [\w\W] 的用法比“.”更匹配,因为“.” 不会匹配换行符。当有换行符匹配时,人们只是习惯于使用完全通配符模式,如 [\s\S] 或 [\w\W]。
最终输出渲染如下:
输出效果图
这样小伙伴们就可以获得狗粮的商品信息了。当然,小编这里只是抛砖引玉,只匹配四条信息,只做单页获取。需要更多数据的朋友可以更改正则表达式,设置多个页面,达到你想要的效果。下一篇文章小编将使用BeautifulSoup对目标数据进行匹配,实现目标信息的精准获取。
最后给大家简单介绍一下正则表达式。正则表达式使用单个字符串来描述和匹配与句法规则匹配的一系列字符串。在许多文本编辑器中,正则表达式通常用于检索和替换与模式匹配的文本。
正则表达式对于初学者来说确实晦涩难懂,但是慢慢学习还是可以掌握的。没有必要完全记住它们,但是你需要知道什么时候需要什么参数,并且可以顺利使用它们。如果你想了解更多关于Python网络爬虫和数据挖掘的知识,可以去专业的网站:/