精华内容
下载资源
问答
  • 我们在刷朋友圈刷微博的时候,总会强调一个『刷』字,因为看动态的时候,当把内容拉到屏幕末尾的时候,APP 就会自动加载下一页的数据,从体验上来看,数据会源源不断的加载出来,永远没有尽头。我们今天就是要讲讲,...

    c59b3d776ad3a75a2c8a18d5420f5b19.png

    【这是简易数据分析系列的第 10 篇文章】

    友情提示:这一篇文章的内容较多,信息量比较大,希望大家学习的时候多看几遍。

    我们在刷朋友圈刷微博的时候,总会强调一个『』字,因为看动态的时候,当把内容拉到屏幕末尾的时候,APP 就会自动加载下一页的数据,从体验上来看,数据会源源不断的加载出来,永远没有尽头。

    190ba6df343a02adaafd2ba575f394a2.gif

    我们今天就是要讲讲,如何利用 Web Scraper 抓取滚动到底翻页的网页。

    今天的练手网站是知乎数据分析模块的精华帖,网址为:

    https://www.zhihu.com/topic/19559424/top-answers

    5dafc32b36f55609c4161b755ee749cb.png

    这次要抓取的内容是精华帖的标题答题人赞同数。下面是今天的教程。

    1.制作 Sitemap

    刚开始我们要先创建一个 container,包含要抓取的三类数据,为了实现滚动到底加载数据的功能,我们把 container 的 Type 选为 Element scroll down,就是滚动到网页底部加载数据的意思。

    eca27193559c79312f3af6695cfe3a8b.png

    在这个案例里,选择的元素名字为 div.List-item

    bde75c8cac0d23e593cd62c934b9b4bb.png

    为了复习上一节通过数据编号控制条数的方法,我们在元素名后加个 nth-of-type(-n+100),暂时只抓取前 100 条数据。

    58d9e7cea351c33d91f114af5bd34265.png

    然后我们保存 container 这个节点,并在这个节点下选择要抓取的三个数据类型。

    首先是标题,我们取名为 title,选择的元素名为 [itemprop='zhihu:question'] a

    2460fb7c81ef826248cd54edc174d552.png

    然后是答题人名字 name 与 赞同数 like,选择的元素名分别为 #Popover10-toggle abutton.VoteButton--up

    3c324b3c86ffa893615b0ab83a9aaec2.png

    e3744fc2c5740ce2f77f77ea9c789dd1.png

    2.爬取数据,发现问题

    元素都选择好了,我们按 Scrape -> Start scraping 的路径进行数据抓取,等待十几秒结果出来后,内容却让我们傻了眼:

    95b95fa2758634de5ce9a6da42ff60a6.png

    数据呢?我要抓的数据呢?怎么全变成了 null?

    在计算机领域里,null 一般表示空值,表示啥都没有,放在 Web Scraper 里,就表示没有抓取到数据。

    1183b90b25c74de900f92f7ddcecf581.png

    我们可以回想一下,网页上的的确确存在数据,我们在整个的操作过程中,唯一的变数就是选择元素这个操作上。所以,肯定是我们选择元素时出错了,导致内容匹配上出了问题,无法正常抓取数据。要解决这个问题,我们就要查看一下网页的构成。

    3.分析问题

    查看一下网页的构成,就要用浏览器的另一个功能了,那就是选择查看元素

     1.我们点击控制面板左上角的箭头,这时候箭头颜色会变蓝。

     2.然后我们把鼠标移动到标题上,标题会被一个蓝色的半透明遮罩盖住。

     3.我们再点击一下标题,会发现我们会跳转到 Elements 这个子面板,内容是一些花花绿绿看不大懂的代码

    2d57713342822974ca986870759f7fee.gif

    做到这里心里别发怵,这些 HTML 代码不涉及什么逻辑,在网页里就是个骨架,提供一些排版的作用。

    如果你平常用 markdown 写作,就可以把 HTML 理解为功能更复杂的 markdown。

    结合 HTML 代码,我们先看看 [itemprop='zhihu:question'] a 这个匹配规则是怎么回事。

    591000bcec6c27878c0fe4628a89e7b4.png

    首先这是个树形的结构:

    • 先是一个名字为 h2 的标签

      ...

      ,它有个 class='ContentItem-title' 的属性;
    • 里面又有个名为 div 的标签

      ...
      ,它有个 itemprop='zhihu:question' 的属性;
    • div 标签里又有一个 名字为 a 的标签  ...

    • a 标签里有一行,就是我们要抓取的标题:如何快速成为数据分析师?

    上句话从可视化的角度分析,其实就是一个嵌套的结构,我把关键内容抽离出来,内容结构是不是清晰了很多?

    class='ContentItem-title'/>

       
    itemprop='zhihu:question'/>        如何快速成为数据分析师?    

    我们再分析一个抓取标题为 null 的标题 HTML 代码。

    87e9f118fc5a59af7c3cc397dd36900c.png

    我们可以很清楚的观察到,在这个标题的代码里,少了名为 div 属性为  itemprop='zhihu:question' 的标签!

    这样导致我们的匹配规则匹配时找不到对应标签,Web Scraper 就会放弃匹配,认为找不到对应内容,所以就变成 null 了。

    找到原因后我们就好解决问题了。

    4.解决问题

    我们发现,选择标题时,无论标题的嵌套关系怎么变,总有一个标签不变,那就是包裹在最外层的,属性名为 class='ContentItem-title'h2 标签。

    如果我们能直接选择 h2 标签,不就可以完美匹配标题内容了吗?

    逻辑上理清了关系,我们如何用 Web Scraper 操作?这时我们就可以用上一篇文章介绍的内容,利用键盘 P 键选择元素的父节点:

    9157f9c2be9ed413d463ba56463aa7aa.gif

    放在今天的课程里,我们点击两次 P 键,就可以匹配到标题的父标签 h2 (或 h2.ContentItem-title):

    5f86c99787e6ede6b358b95315f7df62.gif

    以此类推,因为答题人名字也出现了 null,我们分析了 HTML 结构后选择名字的父标签 span.AuthorInfo-name,具体的分析操作和上面差不多,大家可以尝试一下。

    21c31b042cb5c9f36118e5cf4b454e17.png

    我的三个子内容的选择器如下,可以作为一个参考:

    a6600f7c3c69f9b7a878f0b7d9184200.png

    最后我们点击 Scrape 爬取数据,检查一下结果,没有出现 null,完美!

    d2e5bd8a79db2fb47c50c34d41de70ab.png

    5.吐槽时间

    爬取知乎数据时,我们会发现滚动加载数据那一块儿很快就做完了,在元素匹配那里却花了很多时间。

    这间接的说明,知乎这个网站从代码角度上分析,写的还是比较的。

    如果你爬取的网站多了,就会发现大部分的网页结构都是比较「随心所欲」的。所以在正式抓取数据前,经常要先做小规模的尝试,比如说先抓取 20 条,看看数据有没有问题。没问题后再加大规模正式抓取,这样做一定程度上可以减少返工时间。

    6.下期预告

    这期内容比较多,大家可以多看几遍消化一下,下期我们说些简单的内容,讲讲如何抓取表格内容。

    7.推荐阅读

    b6d8b50b486646fb1143473921129686.png

    281b8654bca0e487de54864465adf85d.png

    18726a41fddf7a6f81a079e3de67a86d.png

    展开全文
  • 我们在刷朋友圈刷微博的时候,总会强调一个『刷』字,因为看动态的时候,当把内容拉到屏幕末尾的时候,APP 就会自动加载下一页的数据,从体验上来看,数据会源源不断的加载出来,永远没有尽头。我们今天就是要讲讲,...
    7e7a356493ccb4a75883111a5c1181e2.png

    这是简易数据分析系列的第 10 篇文章。

    原文首发于博客园:简易数据分析 10。

    友情提示:这一篇文章的内容较多,信息量比较大,希望大家学习的时候多看几遍。

    我们在刷朋友圈刷微博的时候,总会强调一个『』字,因为看动态的时候,当把内容拉到屏幕末尾的时候,APP 就会自动加载下一页的数据,从体验上来看,数据会源源不断的加载出来,永远没有尽头。

    c516cdac00a96f3c3812e968d1042af6.gif

    我们今天就是要讲讲,如何利用 Web Scraper 抓取滚动到底翻页的网页。

    今天我们的练手网站是知乎数据分析模块的精华帖,网址为:

    https://www.zhihu.com/topic/19559424/top-answers

    01e2c92fbbde8a7a39fb29173dd0bd9d.png

    这次要抓取的内容是精华帖的标题答题人赞同数。下面是今天的教程。

    1.制作 Sitemap

    刚开始我们要先创建一个 container,包含要抓取的三类数据,为了实现滚动到底加载数据的功能,我们把 container 的 Type 选为 Element scroll down,就是滚动到网页底部加载数据的意思。

    c44781fe2f58253fdde9ebb601c1eeab.png

    在这个案例里,选择的元素名字为 div.List-item。

    fbd861f1a4bf0739a5cd363f286073a6.png

    为了复习上一节通过数据编号控制条数的方法,我们在元素名后加个 nth-of-type(-n+100),暂时只抓取前 100 条数据。

    3ab44c656559dad76bb5103366c3dac3.png

    然后我们保存 container 这个节点,并在这个节点下选择要抓取的三个数据类型。

    首先是标题,我们取名为 title,选择的元素名为 [itemprop='zhihu:question'] a:

    8547a033ef04ced48f12249c1f944cb6.png

    然后是答题人名字 name 与 赞同数 like,选择的元素名分别为 #Popover10-toggle a 和 button.VoteButton--up:

    62b94c3701bc37b457998f52158a761e.png
    94a8e05b4e01ff85576b7c96b49bb166.png

    2.爬取数据,发现问题

    元素都选择好了,我们按 Sitemap zhihu_top_answers -> Scrape -> Start craping 的路径进行数据抓取,等待十几秒结果出来后,内容却让我们傻了眼:

    1e2a8947bd588101566d007756b6bd69.png

    数据呢?我要抓的数据呢?怎么全变成了 null?

    在计算机领域里,null 一般表示空值,表示啥都没有,放在 Web Scraper 里,就表示没有抓取到数据。

    07a2c0758f4db048f8caeefe72ffb086.png

    我们可以回想一下,网页上的的确确存在数据,我们在整个的操作过程中,唯一的变数就是选择元素这个操作上。所以,肯定是我们选择元素时出错了,导致内容匹配上出了问题,无法正常抓取数据。要解决这个问题,我们就要查看一下网页的构成。

    3.分析问题

    查看一下网页的构成,就要用浏览器的另一个功能了,那就是选择查看元素

    1.我们点击控制面板左上角的箭头,这时候箭头颜色会变蓝。

    2.然后我们把鼠标移动到标题上,标题会被一个蓝色的半透明遮罩盖住。

    3.我们再点击一下标题,会发现我们会跳转到 Elements 这个子面板,内容是一些花花绿绿看不大懂的代码

    cf915e02d80d06b62fa1f5f2eed702f9.gif

    做到这里心里别发怵,这些 HTML 代码不涉及什么逻辑,在网页里就是个骨架,提供一些排版的作用。如果你平常用 markdown 写作,就可以把 HTML 理解为功能更复杂的 markdown。

    结合 HTML 代码,我们先看看 [itemprop='zhihu:question'] a 这个匹配规则是怎么回事。

    0ca6d9959c0014b09db2f0e59ddf7372.png

    首先这是个树形的结构:

    • 先是一个名字为 h2 的标签

      ...

      ,它有个 class='ContentItem-title' 的属性;
    • 里面又有个名为 div 的标签
      ...
      ,它有个 itemprop='zhihu:question' 的属性;
    • div 标签里又有一个 名字为 a 的标签 ...;
    • a 标签里有一行,就是我们要抓取的标题:如何快速成为数据分析师?
    • 上句话从可视化的角度分析,其实就是一个嵌套的结构,我把关键内容抽离出来,内容结构是不是清晰了很多?

    我们再分析一个抓取标题为 null 的标题 HTML 代码。

    4f69160b6a131b87cf2e35784fe5f3fd.png

    我们可以很清楚的观察到,在这个标题的代码里,少了名为 div 属性为 itemprop='zhihu:question' 的标签!这样导致我们的匹配规则匹配时找不到对应标签,Web Scraper 就会放弃匹配,认为找不到对应内容,所以就变成 null 了。

    找到原因后我们就好解决问题了。

    4.解决问题

    我们发现,选择标题时,无论标题的嵌套关系怎么变,总有一个标签不变,那就是包裹在最外层的,属性名为 class='ContentItem-title' 的 h2 标签。我们如果能直接选择 h2 标签,不就可以完美匹配标题内容了吗?

    逻辑上理清了关系,我们如何用 Web Scraper 操作?这时我们就可以用上一篇文章介绍的内容,利用键盘 P 键选择元素的父节点:

    7b25d48dc31392dbafafa9d6d1519c9d.gif

    放在今天的课程里,我们点击两次 P 键,就可以匹配到标题的父标签 h2 (或 h2.ContentItem-title):

    30a6191c46b41dea416e9d113331f6dd.gif

    以此类推,因为答题人名字也出现了 null,我们分析了 HTML 结构后选择名字的父标签 span.AuthorInfo-name,具体的分析操作和上面差不多,大家可以尝试一下。

    75b28c74b4b9294fd9f555e19e2e1d47.png

    我的三个子内容的选择器如下,可以作为一个参考:

    c8097a4716d051092ab91ced5a9c955a.png

    最后我们点击 Scrape 爬取数据,检查一下结果,没有出现 null,完美!

    1a24a89fa01473952774ba14f4d2bd52.png

    5.吐槽时间

    爬取知乎数据时,我们会发现滚动加载数据那一块儿很快就做完了,在元素匹配那里却花了很多时间。

    这间接的说明,知乎这个网站从代码角度上分析,写的还是比较烂的。

    如果你爬取的网站多了,就会发现大部分的网页结构都是比较「随心所欲」的。所以在正式抓取数据前,经常要先做小规模的尝试,比如说先抓取 20 条,看看数据有没有问题。没问题后再加大规模正式抓取,这样做一定程度上可以减少返工时间。

    6.下期预告

    这期内容比较多,大家可以多看几遍消化一下,下期我们说些简单的内容,讲讲如何抓取表格内容。

    7.推荐阅读

    简易数据分析 09 | Web Scraper 自动控制抓取数量 & Web Scraper 父子选择器

    简易数据分析 08 | Web Scraper 翻页——点击「更多按钮」翻页

    展开全文
  • 我们在刷朋友圈刷微博的时候,总会强调一个『刷』字,因为看动态的时候,当把内容拉到屏幕末尾的时候,APP 就会自动加载下一页的数据,从体验上来看,数据会源源不断的加载出来,永远没有尽头。我们今天就是要讲讲,...

    b4d646838b9563d93977fc75fa08b7b8.png

    【这是简易数据分析系列的第 10 篇文章】

    友情提示:这一篇文章的内容较多,信息量比较大,希望大家学习的时候多看几遍。

    我们在刷朋友圈刷微博的时候,总会强调一个『』字,因为看动态的时候,当把内容拉到屏幕末尾的时候,APP 就会自动加载下一页的数据,从体验上来看,数据会源源不断的加载出来,永远没有尽头。

    13b00a13d50adaf03f23c2d5fd4d3964.gif

    我们今天就是要讲讲,如何利用 Web Scraper 抓取滚动到底翻页的网页。

    今天的练手网站是知乎数据分析模块的精华帖,网址为:

    https://www.zhihu.com/topic/19559424/top-answers

    fcbcf314cc0aa6142d0a5e1450d1add0.png

    这次要抓取的内容是精华帖的标题答题人赞同数。下面是今天的教程。

    1.制作 Sitemap

    刚开始我们要先创建一个 container,包含要抓取的三类数据,为了实现滚动到底加载数据的功能,我们把 container 的 Type 选为 Element scroll down,就是滚动到网页底部加载数据的意思。

    ffde580beb10b3f646f77780f366d221.png

    在这个案例里,选择的元素名字为 div.List-item

    4c4accafef79db421bf02d37bc6cdb27.png

    为了复习上一节通过数据编号控制条数的方法,我们在元素名后加个 nth-of-type(-n+100),暂时只抓取前 100 条数据。

    f21a1f2c79e92b1f82a6321156e00b1e.png

    然后我们保存 container 这个节点,并在这个节点下选择要抓取的三个数据类型。

    首先是标题,我们取名为 title,选择的元素名为 [itemprop='zhihu:question'] a

    6da22d7d39579f26bb5b70d0e9aa0529.png

    然后是答题人名字 name 与 赞同数 like,选择的元素名分别为 #Popover10-toggle abutton.VoteButton--up

    5c80d97cad82d2c44c9d159c88b061f5.png

    4946f4136ba10062037a62dfa23697ef.png

    2.爬取数据,发现问题

    元素都选择好了,我们按 Scrape -> Start scraping 的路径进行数据抓取,等待十几秒结果出来后,内容却让我们傻了眼:

    1e814d885d00fb05e29c98a6fe4c07ef.png

    数据呢?我要抓的数据呢?怎么全变成了 null?

    在计算机领域里,null 一般表示空值,表示啥都没有,放在 Web Scraper 里,就表示没有抓取到数据。

    228c1b4420212e5b38eabace7e70a2e0.png

    我们可以回想一下,网页上的的确确存在数据,我们在整个的操作过程中,唯一的变数就是选择元素这个操作上。所以,肯定是我们选择元素时出错了,导致内容匹配上出了问题,无法正常抓取数据。要解决这个问题,我们就要查看一下网页的构成。

    3.分析问题

    查看一下网页的构成,就要用浏览器的另一个功能了,那就是选择查看元素

     1.我们点击控制面板左上角的箭头,这时候箭头颜色会变蓝。

     2.然后我们把鼠标移动到标题上,标题会被一个蓝色的半透明遮罩盖住。

     3.我们再点击一下标题,会发现我们会跳转到 Elements 这个子面板,内容是一些花花绿绿看不大懂的代码

    fe85d0ad1e846c41ff342420215d6e40.gif

    做到这里心里别发怵,这些 HTML 代码不涉及什么逻辑,在网页里就是个骨架,提供一些排版的作用。

    如果你平常用 markdown 写作,就可以把 HTML 理解为功能更复杂的 markdown。

    结合 HTML 代码,我们先看看 [itemprop='zhihu:question'] a 这个匹配规则是怎么回事。

    049e164b0381969411dee4f39510bdb4.png

    首先这是个树形的结构:

    • 先是一个名字为 h2 的标签

      ...

      ,它有个 class='ContentItem-title' 的属性;
    • 里面又有个名为 div 的标签

      ...
      ,它有个 itemprop='zhihu:question' 的属性;
    • div 标签里又有一个 名字为 a 的标签  ...

    • a 标签里有一行,就是我们要抓取的标题:如何快速成为数据分析师?

    上句话从可视化的角度分析,其实就是一个嵌套的结构,我把关键内容抽离出来,内容结构是不是清晰了很多?

    class='ContentItem-title'/>

       
    itemprop='zhihu:question'/>        如何快速成为数据分析师?    

    我们再分析一个抓取标题为 null 的标题 HTML 代码。

    a18770aa875607682a7ebbf3911085b9.png

    我们可以很清楚的观察到,在这个标题的代码里,少了名为 div 属性为  itemprop='zhihu:question' 的标签!

    这样导致我们的匹配规则匹配时找不到对应标签,Web Scraper 就会放弃匹配,认为找不到对应内容,所以就变成 null 了。

    找到原因后我们就好解决问题了。

    4.解决问题

    我们发现,选择标题时,无论标题的嵌套关系怎么变,总有一个标签不变,那就是包裹在最外层的,属性名为 class='ContentItem-title'h2 标签。

    如果我们能直接选择 h2 标签,不就可以完美匹配标题内容了吗?

    逻辑上理清了关系,我们如何用 Web Scraper 操作?这时我们就可以用上一篇文章介绍的内容,利用键盘 P 键选择元素的父节点:

    5ecba03f80a8879d4fd5ccbe68803dd3.gif

    放在今天的课程里,我们点击两次 P 键,就可以匹配到标题的父标签 h2 (或 h2.ContentItem-title):

    0e35aab775d7c647cedb5c7c4ce28643.gif

    以此类推,因为答题人名字也出现了 null,我们分析了 HTML 结构后选择名字的父标签 span.AuthorInfo-name,具体的分析操作和上面差不多,大家可以尝试一下。

    b9c4afb9584eb45e87e6a1aafba98fad.png

    我的三个子内容的选择器如下,可以作为一个参考:

    9590dc25e5eee94aa69912b8f98e797f.png

    最后我们点击 Scrape 爬取数据,检查一下结果,没有出现 null,完美!

    35e74b8e94dd2188b0d7eab3b46d7967.png

    5.吐槽时间

    爬取知乎数据时,我们会发现滚动加载数据那一块儿很快就做完了,在元素匹配那里却花了很多时间。

    这间接的说明,知乎这个网站从代码角度上分析,写的还是比较的。

    如果你爬取的网站多了,就会发现大部分的网页结构都是比较「随心所欲」的。所以在正式抓取数据前,经常要先做小规模的尝试,比如说先抓取 20 条,看看数据有没有问题。没问题后再加大规模正式抓取,这样做一定程度上可以减少返工时间。

    6.下期预告

    这期内容比较多,大家可以多看几遍消化一下,下期我们说些简单的内容,讲讲如何抓取表格内容。

    7.推荐阅读

    02c6e5a3f8e4234d07d14c98979feae9.png

    dc6416f49684477b2d3f78d3ddcfc070.png

    875afb4c0af75d3d87545b97bb153c8c.png

    展开全文
  • 我们在刷朋友圈刷微博的时候,总会强调一个『刷』字,因为看动态的时候,当把内容拉到屏幕末尾的时候,APP 就会自动加载下一页的数据,从体验上来看,数据会源源不断的加载出来,永远没有尽头。我们今天就是要讲讲,...

    793b171fee183a9ff762448c02b0f3d6.png

    11a167c8ecc71ef92ae7892b79803049.png

    这是简易数据分析系列的第 10 篇文章。

    原文首发于博客园:简易数据分析 10。

    友情提示:这一篇文章的内容较多,信息量比较大,希望大家学习的时候多看几遍。

    我们在刷朋友圈刷微博的时候,总会强调一个『』字,因为看动态的时候,当把内容拉到屏幕末尾的时候,APP 就会自动加载下一页的数据,从体验上来看,数据会源源不断的加载出来,永远没有尽头。

    c6256ec8fd00e043c6335d2425a23f4d.gif

    我们今天就是要讲讲,如何利用 Web Scraper 抓取滚动到底翻页的网页。

    今天我们的练手网站是知乎数据分析模块的精华帖,网址为:

    https://www.zhihu.com/topic/19559424/top-answers

    d46b637aebb434f4db5d1efd2ab9a107.png

    这次要抓取的内容是精华帖的标题答题人赞同数。下面是今天的教程。

    1.制作 Sitemap

    刚开始我们要先创建一个 container,包含要抓取的三类数据,为了实现滚动到底加载数据的功能,我们把 container 的 Type 选为 Element scroll down,就是滚动到网页底部加载数据的意思。

    aabc3657f3d9e330eae161d76b51d2cc.png

    在这个案例里,选择的元素名字为 div.List-item

    b11d1b6da7fb42ca7125c4751a78b09d.png

    为了复习上一节通过数据编号控制条数的方法,我们在元素名后加个 nth-of-type(-n+100),暂时只抓取前 100 条数据。

    3eaf3d180af11db10f19b4d3e8862970.png

    然后我们保存 container 这个节点,并在这个节点下选择要抓取的三个数据类型。

    首先是标题,我们取名为 title,选择的元素名为 [itemprop='zhihu:question'] a

    2412ac7f8591887ccb2e7b0c8043778c.png

    然后是答题人名字 name 与 赞同数 like,选择的元素名分别为 #Popover10-toggle abutton.VoteButton--up

    fbe492a527d348dafdc46249e4e0bd6d.png

    fd34b4029fdaa83ffde1cc53b74746e7.png

    2.爬取数据,发现问题

    元素都选择好了,我们按 Sitemap zhihu_top_answers -> Scrape -> Start craping 的路径进行数据抓取,等待十几秒结果出来后,内容却让我们傻了眼:

    eb41f36a89edf96163fbf1e8a89ba0a1.png

    数据呢?我要抓的数据呢?怎么全变成了 null?

    在计算机领域里,null 一般表示空值,表示啥都没有,放在 Web Scraper 里,就表示没有抓取到数据。

    23ffadde8bc6cb54c1a0391dd7bd1615.png

    我们可以回想一下,网页上的的确确存在数据,我们在整个的操作过程中,唯一的变数就是选择元素这个操作上。所以,肯定是我们选择元素时出错了,导致内容匹配上出了问题,无法正常抓取数据。要解决这个问题,我们就要查看一下网页的构成。

    3.分析问题

    查看一下网页的构成,就要用浏览器的另一个功能了,那就是选择查看元素

    1.我们点击控制面板左上角的箭头,这时候箭头颜色会变蓝。

    2.然后我们把鼠标移动到标题上,标题会被一个蓝色的半透明遮罩盖住。

    3.我们再点击一下标题,会发现我们会跳转到 Elements 这个子面板,内容是一些花花绿绿看不大懂的代码

    9677980af18fa47fcb3b898af0ad09d7.gif

    做到这里心里别发怵,这些 HTML 代码不涉及什么逻辑,在网页里就是个骨架,提供一些排版的作用。如果你平常用 markdown 写作,就可以把 HTML 理解为功能更复杂的 markdown。

    结合 HTML 代码,我们先看看 [itemprop='zhihu:question'] a 这个匹配规则是怎么回事。

    21e99663c24dca09e6b56abd099c5196.png

    首先这是个树形的结构:

    • 先是一个名字为 h2 的标签 <h2>...</h2>,它有个 class='ContentItem-title' 的属性;
    • 里面又有个名为 div 的标签 <div>...</div>,它有个 itemprop='zhihu:question' 的属性;
    • div 标签里又有一个 名字为 a 的标签 <a>...</a>
    • a 标签里有一行,就是我们要抓取的标题:如何快速成为数据分析师?

    上句话从可视化的角度分析,其实就是一个嵌套的结构,我把关键内容抽离出来,内容结构是不是清晰了很多?

    <h2 class='ContentItem-title'/>
       <div itemprop='zhihu:question'/>
           <a>如何快速成为数据分析师?</a>
       </div>
    </h2>
    
    
    我们再分析一个抓取标题为 null 的标题 HTML 代码。

    bc44d3c3f7df2ccd93b41cc7eb7d231a.png


    我们可以很清楚的观察到,在这个标题的代码里,少了名为 div 属性为 itemprop='zhihu:question' 的标签!这样导致我们的匹配规则匹配时找不到对应标签,Web Scraper 就会放弃匹配,认为找不到对应内容,所以就变成 null 了。
    找到原因后我们就好解决问题了。

    4.解决问题
    我们发现,选择标题时,无论标题的嵌套关系怎么变,总有一个标签不变,那就是包裹在最外层的,属性名为 class='ContentItem-title'h2 标签。我们如果能直接选择 h2 标签,不就可以完美匹配标题内容了吗?
    逻辑上理清了关系,我们如何用 Web Scraper 操作?这时我们就可以用上一篇文章介绍的内容,利用键盘 P 键选择元素的父节点:

    4b7a181bf38a940de24e9a1e1f8a3ae9.gif


    放在今天的课程里,我们点击两次 P 键,就可以匹配到标题的父标签 h2 (或 h2.ContentItem-title):

    e2b1069944610fb74e4da511f6b1d205.gif


    以此类推,因为答题人名字也出现了 null,我们分析了 HTML 结构后选择名字的父标签 span.AuthorInfo-name,具体的分析操作和上面差不多,大家可以尝试一下。

    efb4f9b5ae92e46344888aa66f00ffc8.png


    我的三个子内容的选择器如下,可以作为一个参考:

    d3afe5e244311eb87ab47052d201a41e.png


    最后我们点击 Scrape 爬取数据,检查一下结果,没有出现 null,完美!

    a343030b3a189df97f1a12d74b45d6ce.png

    5.吐槽时间
    爬取知乎数据时,我们会发现滚动加载数据那一块儿很快就做完了,在元素匹配那里却花了很多时间。
    这间接的说明,知乎这个网站从代码角度上分析,写的还是比较的。
    如果你爬取的网站多了,就会发现大部分的网页结构都是比较「随心所欲」的。所以在正式抓取数据前,经常要先做小规模的尝试,比如说先抓取 20 条,看看数据有没有问题。没问题后再加大规模正式抓取,这样做一定程度上可以减少返工时间。6.下期预告
    这期内容比较多,大家可以多看几遍消化一下,下期我们说些简单的内容,讲讲如何抓取表格内容。7.推荐阅读
    简易数据分析 09 | Web Scraper 自动控制抓取数量 & Web Scraper 父子选择器
    简易数据分析 08 | Web Scraper 翻页——点击「更多按钮」翻页

    0e3964e8a861237a1f55646e5f8ab9b2.png
    展开全文
  • 我们在刷朋友圈刷微博的时候,总会强调一个『刷』字,因为看动态的时候,当把内容拉到屏幕末尾的时候,APP 就会自动加载下一页的数据,从体验上来看,数据会源源不断的加载出来,永远没有尽头。 我们今天就是要讲讲...
  • 我们在刷朋友圈刷微博的时候,总会强调一个『刷』字,因为看动态的时候,当把内容拉到屏幕末尾的时候,APP 就会自动加载下一页的数据,从体验上来看,数据会源源不断的加载出来,永远没有尽头。我们今天就是要讲讲,...
  • 我们在刷朋友圈刷微博的时候,总会强调一个『刷』字,因为看动态的时候,当把内容拉到屏幕末尾的时候,APP 就会自动加载下一页的数据,从体验上来看,数据会源源不断的加载出来,永远没有尽头。 我们今天就是要讲...
  • 我们在刷朋友圈刷微博的时候,总会强调一个『刷』字,因为看动态的时候,当把内容拉到屏幕末尾的时候,APP 就会自动加载下一页的数据,从体验上来看,数据会源源不断的加载出来,永远没有尽头。我们今天就是要讲讲,...
  • ABAP动态内表ALV

    2015-11-30 13:52:57
    我们经常遇到用户对报表栏位动态显示的需求,比如FI/CO报表里,用户希望根据选择屏幕输入不同的会计期间,来对比不同期间的数据,这种通过普通内表是无法构造美观的报表的。下面这支程式,是用来展现一台笔记本电脑...
  • 本身就是一个动态数据交换(DDE)服务器,所以抓取的文本可以广泛应用在任何Windows的文字编辑器中,如记事本、Word、Edit Plus等等。文本抓取的对应快捷键是Ctrl+Shift+P。  3、Video Capture(影像抓图):该项...
  • 实例158 设置窗体在屏幕中的位置 208 实例159 从上次关闭位置启动窗体 209 实例160 始终在桌面最顶层显示的窗体 210 7.2 设置窗体大小 211 实例161 限制窗体大小 211 实例162 根据桌面大小调整窗体大小 212 实例163 ...
  •  实例158 设置窗体在屏幕中的位置 208  实例159 从上次关闭位置启动窗体 209  实例160 始终在桌面最顶层显示的窗体 210 7.2 设置窗体大小 211  实例161 限制窗体大小 211  实例162 根据桌面大小调整窗体...
  • 实例137 抓取鼠标形状 171 3.8 图像识别 172 实例138 查看图片的像素 172 实例139 获取指定点的RGB值 173 实例140 地图地理定位 174 实例141 车牌号码识别 176 3.9 图像工具 177 实例142 获取图片...
  • 实例158 设置窗体在屏幕中的位置 实例159 从上次关闭位置启动窗体 实例160 始终在桌面最顶层显示的窗体 7.2 设置窗体大小 实例161 限制窗体大小 实例162 根据桌面大小调整窗体大小 实例163 自定义最大化、...
  • 实例158 设置窗体在屏幕中的位置 实例159 从上次关闭位置启动窗体 实例160 始终在桌面最顶层显示的窗体 7.2 设置窗体大小 实例161 限制窗体大小 实例162 根据桌面大小调整窗体大小 实例163 自定义最大化、...
  • 实例158 设置窗体在屏幕中的位置 实例159 从上次关闭位置启动窗体 实例160 始终在桌面最顶层显示的窗体 7.2 设置窗体大小 实例161 限制窗体大小 实例162 根据桌面大小调整窗体大小 实例163 自定义最大化、...
  • 实例159 抓取鼠标指针的形状 225 实例160 图像的上下对接显示 226 实例161 任意角度旋转图像 227 实例162 以四周扩散形式显示图像 229 4.8 图像识别 230 实例163 查看图片的像素 230 实例164 设置图像中指定位置的...
  • 程序开发范例宝典>>

    2012-10-24 10:41:28
    实例159 抓取鼠标指针的形状 225 实例160 图像的上下对接显示 226 实例161 任意角度旋转图像 227 实例162 以四周扩散形式显示图像 229 4.8 图像识别 230 实例163 查看图片的像素 230 实例164 ...
  • 明日科技C#示例源码

    2012-07-05 21:46:17
    实例031 抓取网站整页面 109 实例032 电子石英钟 113 实例033 图片自动播放 115 实例034 MP3播放器 118 实例035 播放FLV文件 121 实例036 Flash播放器 125 第4章 报表打印技术 实例037 ...
  • C#程序开发范例宝典(第2版).part02

    热门讨论 2012-11-12 07:55:11
    实例159 抓取鼠标指针的形状 225 实例160 图像的上下对接显示 226 实例161 任意角度旋转图像 227 实例162 以四周扩散形式显示图像 229 4.8 图像识别 230 实例163 查看图片的像素 230 实例164 设置图像中指定...
  • C#程序开发范例宝典(第2版).part13

    热门讨论 2012-11-12 20:17:14
    实例159 抓取鼠标指针的形状 225 实例160 图像的上下对接显示 226 实例161 任意角度旋转图像 227 实例162 以四周扩散形式显示图像 229 4.8 图像识别 230 实例163 查看图片的像素 230 实例164 设置图像中指定...
  • 实例159 抓取鼠标指针的形状 225 实例160 图像的上下对接显示 226 实例161 任意角度旋转图像 227 实例162 以四周扩散形式显示图像 229 4.8 图像识别 230 实例163 查看图片的像素 230 实例164 设置图像中指定...
  • 实例159 抓取鼠标指针的形状 225 实例160 图像的上下对接显示 226 实例161 任意角度旋转图像 227 实例162 以四周扩散形式显示图像 229 4.8 图像识别 230 实例163 查看图片的像素 230 实例164 设置图像中指定...
  • 实例031 抓取网站整页面 109 实例032 电子石英钟 113 实例033 图片自动播放 115 实例034 MP3播放器 118 实例035 播放FLV文件 121 实例036 Flash播放器 125 第4章 报表打印技术 实例037 自定义...
  • 实例142 抓取鼠标形状 206 4.8 图像识别 207 实例143 查看图片的像素 207 实例144 获取指定点的RGB值 207 4.9 图像工具 208 实例145 获取图片类型 208 实例146 简单画图程序 209 实例147 看图工具 ...
  • 实例031 抓取网站整页面 109 实例032 电子石英钟 113 实例033 图片自动播放 115 实例034 MP3播放器 118 实例035 播放FLV文件 121 实例036 Flash播放器 125 第4章 报表打印技术 实例037 自定义横向或...
  • 实例031 抓取网站整页面 109 实例032 电子石英钟 113 实例033 图片自动播放 115 实例034 MP3播放器 118 实例035 播放FLV文件 121 实例036 Flash播放器 125 第4章 报表打印技术 实例037 自定义横向或...
  • 实例031 抓取网站整页面 109 实例032 电子石英钟 113 实例033 图片自动播放 115 实例034 MP3播放器 118 实例035 播放FLV文件 121 实例036 Flash播放器 125 第4章 报表打印技术 实例037 自定义...
  • 实例031 抓取网站整页面 109 实例032 电子石英钟 113 实例033 图片自动播放 115 实例034 MP3播放器 118 实例035 播放FLV文件 121 实例036 Flash播放器 125 第4章 报表打印技术 实例037 自定义...

空空如也

空空如也

1 2 3 4
收藏数 61
精华内容 24
关键字:

屏幕动态数据抓取