当我在做分析时,我喜欢面前有比我可能需要的更多的数据。所有的数据。这就是我喜欢刮东西的原因。
我发现吨用途使用自定义提取尖叫青蛙或抓取数据和工具如数据矿工,智取,或Python -收集sku在运行缓慢或产品数据页面,把当地的搜索引擎优化数据,刮社区或论坛用户问题,甚至抓开放图谱标记或模式。
Xpath是什么?
Xpath是在XML(可扩展标记语言)中选择节点的语法——它可以用于从内容中定位元素。XPath表达式可以在HTML、JavaScript、Java、PHP、Python、C、c++和其他语言中使用,使其成为抓取数据的通用工具。
如何使用xpath
在抓取中使用xpath时,您可以提取重要数据来帮助进行分析。一些使用xpath的好例子包括:
- 抓取产品skus,同时爬行电子商务网站与尖叫青蛙匹配产品的登陆页
- 从竞争对手的YouTube视频中获取评论、喜欢或不喜欢等用户粘性指标
- 匹配文章或更新日期的博客文章登陆页的url
如何查找路径
我喜欢使用Chrome的检查工具来查找xpath。在一个新网站上找到正确的XPath时,通常会有一些尝试和错误——因为网站的结构可能不同——元素可能有不同的类和id。目前市面上也有很多针对xpath的工具和扩展,但Chrome的检查功能已经内置,而且工作得很好。
要在Chrome中找到XPath,你可以点击F12,或者右键单击页面主体,选择菜单中的“检查”——这应该会打开Chrome的开发人员工具的元素标签。您可以右键单击元素并选择Copy > Copy Xpath。
要验证XPath,请按ctrl + f打开“按字符串、选择器或XPath查找器”。如果XPath选择了您想从页面中抓取的所有内容,那么就可以了!如果没有,那么你就需要做些手脚了。通常当使用Chrome的检查器工具时,你会发现结果可能太具体了-就像如果你想选择所有的H3,但你给了一个特定的H3的XPath。
如何使用尖叫青蛙的自定义提取与xpath
尖叫青蛙的自定义提取工具允许使用CSSPath、Xpath或RegEx提取。
尖叫青蛙有一些限制-它不能处理复杂的导航或滚动-如果一个页面包含隐藏的元素,除非用户点击“加载更多”或滚动加载-尖叫青蛙不会抓取这些数据。
- 从顶部菜单导航,选择配置>自定义>提取
2.将一个提取器从“Inactive”更改为“XPath”
3.将标题更新为相关的描述(可选),将XPath添加到输入中,并将输出设置为以下选项之一:提取内部HTML、提取HTML元素、提取文本或函数值。
尖叫蛙在输入字段的右侧包含一个绿色的复选标记或红色的X—这用于验证语法是否有效—如果您看到一个红色的X,您可能需要调整您的语法。
如何在DataMiner中使用xpath
数据矿工是另一个用户友好的基本网络抓取工具-它可以自动点击页面上的元素(如“下一页”或“上一页”)或向下滚动,然后从页面上抓取数据。它还有一个非常简单的JQuery选择功能,这使它成为学习如何抓取数据的好工具。
Xpath小抄
有很多xpath可以用于不同的工具——我将重点介绍尖叫青蛙的自定义提取工具和数据矿工中使用的基本xpath和特定于站点的xpath。
基本的xpath
因为网站的结构可以变化——元素可以有不同的类和id,但是通常有一些基本的xpath可以用于大多数网站格式。
元素 |
Xpath |
提取 |
任何元素 |
/ / * |
中提取文本 |
任何< p >元素 |
/ / p |
中提取文本 |
任何< div >元素 |
/ / div | 中提取文本 |
任何带有“example”类的元素 |
/ / * [@class =“例子”] | 中提取文本 |
整个网页 |
/ html | 提取内部HTML |
所有网页的身体 |
/ html /身体 | 提取内部HTML |
所有文本 |
/ / text () |
中提取文本 |
所有的链接 |
/ / @href | 中提取文本 |
带有特定锚文本“example”的链接 |
/ /[包含。,‘example’)]/@href | 中提取文本 |
电子邮件地址 |
/ /(始于(@href mailto)) | 中提取文本 |
Xpath为搜索引擎优化
尖叫蛙的蜘蛛已经包含标题、元描述、H1s和H2s,但我们还可以拉出更多特定于seo的元素,如H3s-H6s、hreflang值或模式标记。
元素 |
XPATH |
提取 |
H3 |
/ / h3 |
中提取文本 |
H3与具体文字“例” |
/ / h3(包含(文本(),“示例”)) | 中提取文本 |
h3的数 |
计数(/ / h3) | 函数 |
Full hreflang(链接+值) |
/ / * [@hreflang] |
中提取文本 |
Hreflang值 |
/ / * [@hreflang] / @hreflang |
中提取文本 |
类型的模式 |
/ / * [@itemtype] / @itemtype | 中提取文本 |
itemprop模式规则 |
/ / * [@itemprop] / @itemprop | 中提取文本 |
开放图表标签和Twitter卡片
元素 |
XPATH |
提取 |
打开图标题 |
/ /元(始于(@ property og:标题)]/ @content |
中提取文本 |
打开图形描述 |
/ /元(始于(@ property og:描述)]/ @content |
中提取文本 |
开放图谱类型 |
/ /元(始于(@ property og: type)] / @content | 中提取文本 |
开放图形网站名称 |
/ /元(始于(@ property og::域名)]/ @content | 中提取文本 |
开放的图形图像 |
/ /元(始于(@ property ' og:图像'))/ @content | 中提取文本 |
开放图谱URL |
/ /元(始于(@ property og: url)] / @content | 中提取文本 |
Facebook页面ID |
/ /元(始于(@ property, fb: page_id)] / @content | 中提取文本 |
Facebook的管理员 |
/ /元(始于(@ property, fb:管理员)]/ @content |
中提取文本 |
Twitter的标题 |
/ /元(始于(@ property, twitter:标题)]/ @content | 中提取文本 |
Twitter的描述 |
/ /元(始于(@ property, twitter:描述)]/ @content | 中提取文本 |
Twitter帐户 |
/ /元(始于(@ property, twitter: account_id)] / @content | 中提取文本 |
推特卡 |
/ /元(始于(@ property,“twitter:卡”)]/ @content | 中提取文本 |
Twitter的形象 |
/ /元(始于(@ property twitter:形象:src)] / @content | 中提取文本 |
Twitter创始人 |
/ /元(始于(@ property, twitter:创造者)]/ @content | 中提取文本 |
Xpath为YouTube
下面的xpath从视频页面(https://www.youtube.com/user/【用户名】/视频) -这将允许你收集一个完整的库存YouTube频道的视频。
元素(视频页面) |
XPATH |
提取 |
视频标题 |
/ / h3 / |
中提取文本 |
视频网址 |
/ / h3 / / @href |
中提取文本 |
尖叫青蛙只从一个视频页面拉出前30个左右的视频-为了收集完整的内容清单,你需要使用刮板,在刮之前有滚动到最后的功能(像数据Miner)。
你也可以用the镀铬刮刀加长件滚动到页面底部后抓取所有视频url,然后右键单击一个视频标题,选择“类似抓取”。
一旦编译了YouTube视频url列表,就可以将它们作为列表上传到尖叫青蛙中,并使用下面的xpath获取每个视频的信息。
元素(youtube视频网址) |
XPATH |
提取 |
用户名 |
(/ / *[包含(@class yt-user-info)]) [1] |
中提取文本 |
标题 |
/ /标题 |
中提取文本 |
发布日期 |
/ / * ((@class = ' watch-time-text ')) |
中提取文本 |
数量的观点 |
/ / * ((@class = ' watch-view-count ')) |
中提取文本 |
喜欢 |
(/ / *[包含(@class like-button-renderer-like-button)]) [1] |
中提取文本 |
不喜欢 |
(/ / *[包含(@class like-button-renderer-dislike-button)]) [1] |
中提取文本 |
描述 |
/ / * [@itemprop = '描述']/ @content |
中提取文本 |
你不应该刮的网站
像Yelp这样的一些网站有不允许网络抓取的服务条款。这意味着,如果你被发现抓取这样一个网站,你的IP地址可能会被阻止访问该网站。
你甚至可以违背Yelp ToS尖叫着跑一般青蛙爬在Yelp的URL,所以如果你致力于竞争分析和计划运行大部分的URL列表通过尖叫青蛙——确保你删除任何Yelp URL(从类似的网站服务条款或URL)。
网络抓取的首要规则是——友善。如果你开始使用更高级的爬行方法,放慢你的速度,这样你就不会猛击网站的服务器。