Sci论文 - 至繁归于至简,Sci论文网。 设为首页|加入收藏
当前位置:首页 > 计算机论文 > 正文

基于 Python 爬虫技术的商品信息采集与分析论文

发布时间:2022-02-07 10:05:19 文章来源:SCI论文网 我要评论














SCI论文(www.scipaper.net):
 
摘   要:大数据背景下,怎样快速有效地获取所需的数据信息成为互联网企业和网络用户热切关注的内容。网络爬虫在网 络数据采集与分析上发挥了重要的作用。本文以京东作为目标网站,采用 Python 的爬虫技术,设计了一种商品采集与分析的 方法。使用 Requests 库对按关键字搜索的结果商品信息进行下载,使用正则表达式和 Beautiful Soup 对数据进行初步清洗, 最后将数据存储到 MongoDB 数据库中,实现了预想的目标。

关键词: 电商平台 ;Python ;网络爬虫 ;数据采集

Collection and Analysis of Commodity Information Base on Python and Crawler Technology
MENG Xianying, MAO Yingshuang
(Changchun Institute of Technology, Changchun Jilin 130022)

【Abstract】: Under the background of big data, how to quickly and effectively obtain the required data information has become the hot concern of internet enterprises and network users. Web crawler plays an important role in network data collection and analysis. This article takes Jingdong as the target website and designs a method of commodity collection and analysis by Python crawler technology. The Requests library is used to download the product information of the search results by keyword, the regular expression and Beautiful Soup are used to preliminarily clean the data, and finally the data is stored in the MongoDB database to achieve the expected goal.
【Key words】: E-commerce platform;Python;web crawler;data collection

0 引言

         在大数据时代,人类社会的数据爆炸式增长,数据 背后隐藏的巨大商业价值正开始被越来越多的人重视。京 东、淘宝等互联网电商平台每天都会产生海量的商品交 易数据,在如此庞大的数据信息网络中,如何有效获取 数据,如何获取有效数据,并针对这些数据进行分析和 挖掘,对于提高商品销量、改善消费者购物体验等方面 都具有非常重要的价值 [1]。网络爬虫,能够自动地抓取 网页的信息,根据制定的规则下载和提取信息,其在网 页信息检索过程中发挥着至关重要的作用。用户通过网络爬虫的爬取可以快捷的获取网络数据,便于进行数据 挖掘。具有丰富功能的 Python 在网络爬虫技术中脱颖而 出。本文将利用 Python 提供的爬虫技术,获取电商平台中的商品数据,将其保存到本地,以备进一步的挖掘。
\

1 相关技术分析

1.1 Python 语言简介和优势

         Python 是一门高级程序开发语言。Python 语言 十分简洁,具备模块数量多、支持标准库、较强的可移 植性等诸多优势,具有较强的可读性和可维护性。基于 Python 的爬虫程序,可以利用 Python 语言简洁以及 资源丰富的优势,在爬虫编写过程中,提升程序员编写 效益。Python 为程序编写提供的较为实用的框架,有 利于爬虫迅速获取网页中的数据信息 [2],有利于数据挖掘整理及数据处理等。Python 强有力的网络能力,也 为爬虫在大数据时代背景下对互联网中各类数据的信息 检索提供了良好的技术支持。

1.2 网络爬虫技术

         网络爬虫,其本质是一种计算机程序,它是依靠预 先设定好的规则而进行自动的抓取网络信息的过程。它 的行为看起来就像蜘蛛在网上面爬行一样,顺着互联 网这个“网”,按照既定的规则,一条线一条线的“爬 行”。其主要应用于各种数据信息的收集。

         网络爬虫按照系统组成结构和技术的实现分为通用 网络爬虫、聚焦网络爬虫等多种类型。其中通用网络爬虫在应用过程中,一般会从一个或出个初始的地址开始 爬取,在获取初始页面代码的同时,会从其中提取有关 的地址放入到队列中,直到满足停止条件为止。这种类 型的网络爬虫其爬取目标是全网资源,目标数据和爬行 范围都非常庞大,主要用于大型搜索引擎中。聚焦网络 爬虫在应用过程中,会有选择的按照预先定义好的主题 进行页面爬取。一般需要先借助一些网页分析算法过滤 掉与搜索主题没有关系的地址,再按照搜索策略,从队 列中不断抓取,不断重复,直到满足程序停止条件。这 类网络爬虫目标数据和爬行范围都相对较小,它能够在 海量的信息库中获取精准有效的用户需要的信息,而且 可以过滤掉一些和主题无关的广告信息 [3],可以很好的 满足一些特定人群对特定领域信息的需求。本文中对商 品信息的采集正是使用了这种聚焦网络爬虫。

2 爬虫模型设计

2.1 分析 URL

         大型电商平台商品种类繁多,商品数量数以万计, 为了方便消费者快速定位到自己感兴趣的商品,各大电 商平台都会提供“搜索”的功能,例如京东、拼多多、 淘宝等。以在京东的商品搜索条中搜索“华为手机”为 例,通过对搜索返回的前五页结果页面对应的 URL 进 行分析,发现 keyword 和 wq 后面的值就是用户输入 的搜索的关键字,enc 的值就是网页的编码格式,page 的值与搜索结果的页码有关,通过分析发现 page 的 取值等于 1+2*( 页码 -1)。最后,通过对搜索结果页面 所对应的 URL 进行分析可得到访问搜索结果页面的 第 n 页 URL 用 Python 语言表示为“https://search. jd.com/Search?keyword={keyword}&enc=utf- 8&wq={keyword}&page={page}”.format(keyword=keyword,page=1+2*(n-1))。这种爬取商品信息时涉及 到的翻页操作就可以通过修改 n 的值来实现。

2.2 爬取网页内容

         对于网页内容的下载,主要使用 Python 提供的 Re- quests 库, 它是基于 Python 开发的 HTTP 库 [4]。不仅可以 重复读取 HTTP 请求返回的数据,而且可以自动识别网页编码,让获取网页内容变得极为简单。
在数据爬取之前,通过对京东的 Robots 文件分析 可知,出于数据保护的考量,该网站对爬虫访问进行了 反爬设置,它的拒绝机制主要在于 User-agent 的识别, 使用真实浏览器的可以正常访问网站,但使用爬虫程序 访问时将会遭到拦截。因此我们需要修改网络请求头, 将爬虫伪装成浏览器,再利用 requests 库中的 get 方 法对目标网页进行爬取,从而获得当前页面的 html 代码。通过 raise_for_status() 来判断在获取网页源代码 过程中是否产生了异常。具体代码如下 :

def resURL(url):
head = {user-agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36}
keyword =  华为手机
kv = {keyword: keyword, enc: utf-8, wq: keyword}
try:
r = requests.get(https://search.jd.com/Search, params=kv, headers=head)
r.raise_for_status()
r.encoding=r.apparent_encoding
html=r.text
return hrml
except Exception:
print(‘发生异常! ’)

2.3 提取商品信息

         利用 requests 库爬取的是整个网页的 html 文档, 其中大部分数据并不是我们想要的商品信息,因此还需 要使用解析 HTML 网页的工具,对商品关键信息进行 有效的提取。在 Python 中解析网页主要用到正则表达 式、XPath 路径语言和 Beautiful Soup 三种工具。

         正则表达式是由美国数学家提出的一种强大的用于 字符的匹配和替换的工具。它是一段字符串,可以表示 一段有规律的信息。Python 自带一个正则表达式模块, 通过这个模块可以非常快速精准的处理一系列较复杂的 字符串的查找、提取和替换,具有快速匹配文本进行信息抽取的特点,效率比较高。但是缺点也很明显,正则 表达式不是很直观,写起来比较复杂,不太利于大规模 集合的构造和高速的数据流匹配。

         XPath 是一种查询语言, 它能在 XML 和 HTML 的 树状结构中寻找结点,可在 XML 和 HTML 文档中对元 素和属性进行遍历。在 Python 中,借助 Lxml 这个第三方库,配合 Chrome 浏览器或 Firefox 浏览器,就可 以使用 XPath 了。XPath 比较直观易懂,写起来非常简 单,它的代码运行速度快且健壮,是解析数据的一个很 好的选择。

         Beautiful Soup 是一个可以从 HTML 或 XML 文件 中提取数据的 Python 库。它支持不同的解析器,比如 对 HTML、XML、HTML5 解析。它能够通过我们喜欢 的转换器实现惯用的文档导航、查找。Beautiful Soup比较简单易学,编写效率高,但与 Lxml 和正则表达式 相比,解析速度慢很多。

         在本文中,通过对下载的搜索结果网页源码分析发 现,针对于“华为手机”关键字搜索的结果被包含在一 个属性 class 的值为 gl-warp clearfix 的 ul 标签中,每 个商品的基本信息都被包含在 li 标签中,一个 li 标签 就对应了一个商品,其中 a 标记中的 href 属性值为该 商品详细信息的页面链接。我们可以采取“先抓大再抓 小”的原则,先利用正则表达式把搜索结果的大块信息 抓取出来。再利用 Beautiful Soup 库中 find 方法提取 每个商品 a 标记中的 href 属性值,找到商品详细信息 的 URL。然后针对这个 URL 再次发起 requests 请求, 爬取商品详情页面的 html 代码。使用类似的方式,即 可获得商品的详细信息,如名称、价格、颜色、版本、 增值保障、商品介绍、商品评价等有效信息。

2.4 商品信息存储

          由于爬虫采集到的数据具有复杂的结构,因此在 保存商品信息时,选择使用 MongoDB 进行数据存储。 MongoDB 是一款基于 C++ 开发的开源文档数据库, MongoDB 作为非关系型数据库,数据以 key-Value 的 形式存储,就像是 Python 中的字典一样。MongoDB 没有 schema 的严格定义,能够轻松应对爬虫字段的 变化等情况,也可以很轻松地横向扩展、分片和集群, 非常适合存储大规模爬虫数据。通过 pyMongo 这个 Python 对 MongoDB 操作的接口包,可以很方便的实现与 MongoDB 数据库的交互。具体代码实现如下 :

from pymongo import MongoClient       
client=MongoClient(‘localhost’,27017)  
database=client[‘jingdong’]
collection=database[‘product’]
def save_ro_db(result):
try:
if collection.insert_one(result):
print(‘保存到数据库成功! ’,result)
except Exception:
print(‘保存到数据库失败! ’,result)

3 关键问题及解决方法

3.1 爬虫被封禁

          在首次运行爬虫时发现,只要爬取几百条左右的数 据量就会有异常出现,通过查看京东的 Robots 协议发 现,网站进行了来源审查。当网站检测出爬虫脚本程序 后,服务器自动封禁了检测到的 IP。
解决方法 :用 User-Agent 伪装请求头,模拟浏览器来进行请求,使其能够正常访问网站。并且添加一个 5 秒延时,使访问浏览器的行为更接近于正常用户的访问。

3.2 多线程爬取

          单线程爬虫每次只访问一个页面,不能充分利用计 算机的网络带宽。一个页面一般也就几百 KB,所以爬 虫在爬取一个页面的时候,多出来的网速和从发起请求 到得到源代码中间的时间都被浪费了。为了提高商品信 息的采集效率,充分利用资源,爬虫程序进行并发采 集。Python 提供的多进程库 multiprocessing, 用来 处理与多进程相关的操作。但是由于进程和进程之间不 能直接共享内存和堆栈资源,而且启动新的进程开销也 比线程大得多,因此使用多线程来爬取比使用多进程有 更多的优势。Multiprocessing 下面有一个 dummy 模 块,利用其中的 Pool 类来实现线程池,从而有效提高 商品信息采集效率。

4 结语

          随着大数据技术的不断发展,Python 爬虫技术也越 来越成熟,广泛应用在很多领域。本文基于 Python 的 第三方库,Requests 和 Beautiful Soup, 对京东的商品 信息进行了定向爬取。实验证明,爬虫可以根据用户的 需求快速抓取目标数据信息,能够有选择性的进行网页 访问,有助于用户快速精准的获取所需信息,具有一定 的现实意义。但是需要完善的部分还有许多,例如在数 据量较大时,爬虫爬取的速度会明显减慢,可以尝试使 用分布式爬虫进行爬取,有利于采集效率的进一步提高。

\

参考文献

[1] 丁晟春,候琳琳,王颖.基于电商数据的产品知识图谱构建研 究[J].现代图书情报技术,2019(3):45-56.
[2] 潘巧智,张磊.浅谈大数据环境下基于Python的网络爬虫技术[J].网络安全技术与应用,2018(5):44-45.
[3] 白雪丽.浅析基于Python爬虫技术的特性及应用[J].山西科技,2018,33(2):53-55.
[4] 常逄佳,李宗花,文静,等.基于Python的招聘数据爬虫设计与实现[J].软件导刊,2019(12):130-133.

关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!
 

文章出自SCI论文网转载请注明出处:https://www.scipaper.net/jisuanjilunwen/35574.html

发表评论

Sci论文网 - Sci论文发表 - Sci论文修改润色 - Sci论文期刊 - Sci论文代发
Copyright © Sci论文网 版权所有 | SCI论文网手机版 | 豫ICP备2022008342号-1 | 网站地图xml | 百度地图xml