采集规则 采集 data-src(采集思路HTML代码分析神器(HtmlAgilityPack)(HtmlAgilityPack)(组图))

优采云 发布时间: 2022-01-23 09:24

  采集规则 采集 data-src(采集思路HTML代码分析神器(HtmlAgilityPack)(HtmlAgilityPack)(组图))

  一开始说

  由于公司需要,为了降低工作成本,需要采集一些存储数据,需要插入到在线数据库中。

  采集事情

  HTML代码分析神器(HtmlAgilityPack),接下来分析阿里巴巴的店铺数据规则。我这里的思路是先在搜索栏中根据关键词和region进行搜索,然后根据结果分析店铺的URL。然后根据店铺的URL进入店铺,找到“所有分类页面”,解析所有分类,然后根据分类URL获取分类下的商品数据。找到产品网址后,进入产品页面,解析所需的产品信息。这是我个人的 采集 想法。下面介绍每个步骤中需要注意的点。

  1、分析店铺网址

  上图

  

  URL 规则为:{search关键词}&province={region}&pageSize=30&sortType=pop&beginPage=1

  关键字和省都是汉字,需要用GBK编码(阿里是GBK编码),然后传入URL,beginPage是页码,必须为1。如果手动修改这个参数,会触发阿里的安全验证。其实这一步就是难点,关键是如何突破这个安全验证。采集开头的时候,通过上面的URL下载并分析了HTML源代码,但是到了第二页,每次都启动了阿里的安全验证。使用 webBrowser 模拟点击并跳转到下一页。

  尝试突破阿里分页的过程(未使用webBrowser之前):

  1、从 URL 开始,无论你做什么都会触发这个规则。

  2、查看源代码,看看当你点击下一页时会发生什么,这就是你会在这个 HTML 中找到的内容

  

  翻页时会触发此表单。有两个认证参数,UA和TOKEN。这些加密字符是由下面的UA.JS动态生成的,更BT的是UA参数中的字符会被鼠标操作(点击、移动等)动态修改,必须修改UA才能通过验证(以后没办法研究这个东西,换个思路就行了)。到这里才想到用webBrowser来动态模拟鼠标移动,点击页面的下一页按钮。这就是上图中有三个按钮的原因:一个网页浏览器、一个模拟移动和一个模拟点击。

  接下来,我们来谈谈如何模拟鼠标的移动和点击。这里我们使用 WINDOWS API。如果这里不清楚,可以找资料。

  

  其实就是模拟操作。两个加密参数自动处理后,模拟下一页页面点击,这样就不会进行安全验证了。

  完整的顺序是:先传第一页的URL,加载到webBrowser,然后在webBrowser的DocumentCompleted(HTML文档全部加载完毕)事件中,先用WINDOWS API调用模拟鼠标移动,然后验证参数已经开始改变。现在,在这里睡 500 毫秒。然后调用并点击下一页的按钮,这样第二页的数据就会在webBrowser中更新,然后取出来分析,剩下的就是重复上面的工作。

  

  需要说明的是,接下来的两个按钮需要有自己的事件,当是采集时,鼠标不能自行移动。

  好了,到这里你已经得到了公司的 URL,下一步就是分析每家商店并获取产品数据。

  2、分析产品数据

  这里没有安全验证。我没有使用 webBrowser,而是直接通过 URL 下载 HTML 代码字符分析。如果采集频繁,可以动态设置代理。阿里的店铺网址是很正规的{username}./. 您可以获得此用户名,这是唯一的标识符。您可以使用它来确定商店是否有 采集。

  

  过程:

  1、“公司简介”页面是通过分析店铺首页的URL得到的。规则是 {username}./page/creditdetail.htm。在这里可以获取公司的一些基本信息(公司名称、联系人、电话号码、手机号码、地址、简介等)。

  2、解析分类信息,规则为{username}./page/offerlist.htm,这里只需要获取店铺的所有分类ULR,并提供如下XPATH(//div[@class= 'wp-category-nav-unit']/ul/li)。

  

  3、解析分类号,然后在第二步的基础上,通过URL获取分类号。规则是 offerlist_{category number}.htm。在这里,一些商店有两个级别的类别。到第三级,我这里只取第一级。

  4、获取小节下的商品数据,规则{username}./page/offerlist_{category number}.htm?pageNum={page number},取出HTML解析,提供XPATH(page数 ://em[@class='page-count'] 如果没有找到,只有一页;产品://ul[@class='offer-list-row']/li),产品 URL 映射。

  

  5、获取商品详情,规则{商品编号}.html,通过上图中解析的URL获取商品编号,从而判断商品是否已经采集。下一步是通过 HTML 分析您需要的内容。这里唯一需要注意的是,产品描述是通过 AJAX 动态加载的。

  

  找到data-tfs-url,然后下面的内容就是产品描述。

  最后放入仓库。可以将 采集 的字段与您的数据库字段匹配。

  好了,所有的步骤都解释完了,如果思路还不错,请点击“推荐”!!!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线