通过关键词采集文章采集api(采集思路HTML代码分析神器(HtmlAgilityPack)(HtmlAgilityPack)(组图))
优采云 发布时间: 2021-09-27 10:25通过关键词采集文章采集api(采集思路HTML代码分析神器(HtmlAgilityPack)(HtmlAgilityPack)(组图))
一开始就说
由于公司需要,为了降低工作成本,需要一些存储数据,需要插入到在线数据库中。
采集思考
HTML代码分析神器(HtmlAgilityPack),接下来分析阿里巴巴的店铺数据规则。我这里的想法是先在搜索栏中根据关键词和region进行搜索,然后根据结果分析店铺的URL。然后根据店铺的URL进入店铺,找到“所有分类页面”,解析所有分类,然后根据分类URL获取分类下的商品数据。找到产品网址后,进入产品页面,分析需要的产品信息。这是我个人的采集 想法。下面介绍每一步需要注意的关键点。
1、分析店铺网址
第一张图
URL 规则是:{search关键词}&province={location}&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动态模拟鼠标移动,点击页面的下一页按钮。这就是为什么上图中会有webBrowser、模拟移动、模拟点击三个按钮的原因。
接下来,我们来谈谈如何模拟鼠标的移动和点击。这里我们调用WINDOWS API。如果您不确定,您可以查找信息。
其实就是模拟操作。自动处理完两个加密参数后,模拟页面下一页,点击,这样就不会有安全验证了。
完整的顺序是:首先通过第一页的URL加载webBrowser,然后在webBrowser的DocumentCompleted事件中使用WINDOWS API调用模拟鼠标移动。此时,验证参数已经开始发生变化。是的,这里它休眠了 500 毫秒。然后调用按钮点击下一页,这样第二页的数据就会在webBrowser中更新,然后取出来分析,剩下的就是重复上面的工作了。
需要说明的是,两个按钮都需要有自己的事件,当采集时,鼠标不能自行移动。
好了,这里你已经得到了公司的 URL,下一步就是分析每个商店并获取产品数据。
2、分析产品数据
这里没有安全验证。我没有使用 webBrowser,而是直接通过 URL 下载 HTML 代码字符分析。如果采集频繁,我可以动态设置代理。阿里的店铺网址都是很正规的{username}./,你可以拿到这个username,这是一个唯一的标识,以后可以用这个来判断店铺是否已经采集。
过程:
1、 通过店铺首页的URL分析,得到“公司简介”页面。规则是{username}./page/creditdetail.htm,在这里可以获取一些基本的公司信息(公司名称、联系人、电话、手机)、地址、介绍等)。
2、分析分类信息,规则是{username}./page/offerlist.htm,这里只需要获取店铺的所有分类ULR,并提供XPATH(//div[@class='wp-类别导航单元']/ul/li)。
3、分析分类号,在第二步的基础上,通过URL得到分类号。规则是 offerlist_{category number}.htm。在这里,有些店铺的品类有两层,到了第三层,我这里统一只取第一层。
4、获取规则{username}./page/offerlist_{category number}.htm?pageNum={page number}下的商品数据,取出HTML解析,提供XPATH(页码:/ /Em[@class='page-count'] 没有找到就只有一页;商品://ul[@class='offer-list-row']/li),商品网址映射。
5、获取商品详情,规则{商品编号}.html,通过上图中解析的URL获取商品编号,判断商品是否已经采集。下一步是通过 HTML 分析您需要什么。这里只有一点需要注意,就是产品描述是通过AJAX动态加载的。
找到data-tfs-url,下面的内容是产品说明。
最后一步是存储在数据库中。可以将 采集 的字段与您的数据库字段匹配。
好了,所有步骤都解释完了。如果想法还是不错的,请参考官方“推荐”!!!