运行爬网程序不会获得与培训时相同的数据

Ian*_*ill 7 import.io

在训练我的抓取工具抓取Yelp页面时,它会在没有我做任何事情的情况下获取所有信息,但是当我运行抓取工具时,地址无法识别,并且不会记录.

Nic*_*ott 8

从Yelp获取公司数据

在这种情况下,我们希望从网站www.yelp.com获取旧金山公司的地址.

分析网站

我们可以从这个页面得到一个以字母"A"开头的公司列表:

http://www.yelp.com/sm/san-francisco-ca-us/a/1
Run Code Online (Sandbox Code Playgroud)

此目录页面告诉我们"A"有42页的结果,每页最多80个结果.

这是个好消息.

创建一个API

我现在要创建一个API来从第一页获取数据,然后使用Bulk Extract将URL列表传递给所有42个页面.

使用Magic,我只需点击几下即可生成API:

  1. 转到Magic.import.io
  2. 粘贴到Yelp页面的URL(上面的链接)
  3. 点击"提取数据"
  4. 点击"获取API"
  5. 点击"将此项复制到我的数据"

现在我们有了一个API!

(请注意,如果您需要更多地控制API中包含或排除的内容,您可以使用Extractor)

生成URL列表

要生成允许我们从第1页到第42页获取数据的URL列表,我将使用托管在以下位置的外部服务:

http://texttool.blogspot.co.uk/

找到"生成数字列表"工具并生成URL列表:

http://www.yelp.com/sm/san-francisco-ca-us/a/1
http://www.yelp.com/sm/san-francisco-ca-us/a/2
http://www.yelp.com/sm/san-francisco-ca-us/a/3
http://www.yelp.com/sm/san-francisco-ca-us/a/4
http://www.yelp.com/sm/san-francisco-ca-us/a/5
http://www.yelp.com/sm/san-francisco-ca-us/a/6
http://www.yelp.com/sm/san-francisco-ca-us/a/7
http://www.yelp.com/sm/san-francisco-ca-us/a/8
http://www.yelp.com/sm/san-francisco-ca-us/a/9
http://www.yelp.com/sm/san-francisco-ca-us/a/10
http://www.yelp.com/sm/san-francisco-ca-us/a/11
http://www.yelp.com/sm/san-francisco-ca-us/a/12
http://www.yelp.com/sm/san-francisco-ca-us/a/13
http://www.yelp.com/sm/san-francisco-ca-us/a/14
http://www.yelp.com/sm/san-francisco-ca-us/a/15
http://www.yelp.com/sm/san-francisco-ca-us/a/16
http://www.yelp.com/sm/san-francisco-ca-us/a/17
http://www.yelp.com/sm/san-francisco-ca-us/a/18
http://www.yelp.com/sm/san-francisco-ca-us/a/19
http://www.yelp.com/sm/san-francisco-ca-us/a/20
http://www.yelp.com/sm/san-francisco-ca-us/a/21
http://www.yelp.com/sm/san-francisco-ca-us/a/22
http://www.yelp.com/sm/san-francisco-ca-us/a/23
http://www.yelp.com/sm/san-francisco-ca-us/a/24
http://www.yelp.com/sm/san-francisco-ca-us/a/25
http://www.yelp.com/sm/san-francisco-ca-us/a/26
http://www.yelp.com/sm/san-francisco-ca-us/a/27
http://www.yelp.com/sm/san-francisco-ca-us/a/28
http://www.yelp.com/sm/san-francisco-ca-us/a/29
http://www.yelp.com/sm/san-francisco-ca-us/a/30
http://www.yelp.com/sm/san-francisco-ca-us/a/31
http://www.yelp.com/sm/san-francisco-ca-us/a/32
http://www.yelp.com/sm/san-francisco-ca-us/a/33
http://www.yelp.com/sm/san-francisco-ca-us/a/34
http://www.yelp.com/sm/san-francisco-ca-us/a/35
http://www.yelp.com/sm/san-francisco-ca-us/a/36
http://www.yelp.com/sm/san-francisco-ca-us/a/37
http://www.yelp.com/sm/san-francisco-ca-us/a/38
http://www.yelp.com/sm/san-francisco-ca-us/a/39
http://www.yelp.com/sm/san-francisco-ca-us/a/40
http://www.yelp.com/sm/san-francisco-ca-us/a/41
http://www.yelp.com/sm/san-francisco-ca-us/a/42
Run Code Online (Sandbox Code Playgroud)

散装提取物

现在,您可以使用批量提取一次性从每个URL获取数据.

去做这个:

  1. 转到Yelp API上的Configure选项卡
  2. 从下拉列表中选择Bulk Extract
  3. 粘贴在42个URL列表中
  4. 点击"运行查询"

注意:您可能会遇到一些失败的查询.通过单击"X URL failed"文本,您可以重试失败的查询.

出口

您现在可以将此数据导出为电子表格,如HTML或JSON.

进一步阅读

http://support.import.io/knowledgebase/articles/669784-getting-company-data-from-yel​​p


Amr*_*Ali 1

你应该使用 xpath 在 yelp 上选择你想要的内容,我之前已经在 yelp 上这样做过,而且 xpath 比手动训练更准确。