当前位置: 首页 > 后端技术 > Python

如何使用BeautifulSoup选择器抓取京东商品信息

时间:2023-03-26 15:40:47 Python

昨天,小编使用Python正则表达式抓取京东商品信息。看过代码的小伙伴基本坐不住了。这么多的规则和这么长的代码,好难过,真是不堪。不过小伙伴们不要着急,今天我用BeautifulSoup来给大家介绍如何实现京东商品信息的精准匹配~~HTML文件其实是由一组尖括号组成的标签组织起来的,每一对尖括号就组成了一个标签,标签之间存在上下关系,形成标签树;因此,BeautifulSoup库可以说是一个解析、遍历、维护“标签树”的函数库。首先进入京东,输入你要查询的商品,向服务器发送网页请求。在这里,小编依旧以关键词“狗粮”作为搜索对象,然后得到如下网址:https://search.jd.com/Search?keyword=%E7%8B%97%E7%B2%AE&enc=utf-8,这里的参数就是我们输入的关键字。在这个例子中,参数代表“狗粮”。具体可以参考python高手用正则表达式教大家如何获取京东商品信息。因此,只要输入关键字参数并进行编码,就可以得到目标URL。然后请求网页,得到响应,然后使用bs4选择器进行下一步的数据采集。京东官网部分商品信息源码如下图所示:仔细观察源码,可以发现我们需要的目标信息存在标签,那么我们就像剥洋葱一样,一层一层的去获取我们想要的信息。直接上传代码,如下图所示:通常,URL编码方式是将需要编码的字符转换成%xx的形式。一般来说,URL编码都是基于UTF-8的,当然也有一些和浏览器平台有关。Python的urllib库中提供了quote方法,可以对URL的字符串进行编码,从而进入对应的网页。然后使用BeautifulSoup提取目标信息,例如产品名称、链接、图片和价格。具体代码如下图所示:在这个例子中,有一点需要注意,就是部分图片的链接是空的,所以在提取的时候需要考虑到这个问题。有两种解决方法。一是如果使用img['src'],会报错,因为无法匹配到对应的值;但是使用get['src']不会报错。如果没有匹配,它将自动返回None。另外,try+except也可以用来处理异常。如果没有匹配,则通过。朋友们可以自己测试一下。这个代码测速过程在上图中也有提到。使用get方法获取信息是bs4中的一个小技巧。希望大家学以致用~~~最终效果图如下:新鲜狗粮出炉了~~~小伙伴们是不是发现用BeautifulSoup获取目标信息比正则表达式简单多了?如果想深入了解Python网络爬虫和数据挖掘,可以去专业网站:http://pdcfighting.com/