捕获和转换Web的工具

适用于Python的Web Scraper API Python Scraper API

首先 下载 Web Scraper API for Python,并查看其中的示例处理程序以开始使用。

处理刮取的数据

处理已抓取数据的最简单方法是将数据作为JSON或XML对象进行访问,因为这使数据易于操作和查询。 JSON将以以下通用格式进行构造,以数据集名称作为对象属性,本身包含一个对象数组,每个列名称作为另一个属性。

{
  "Dataset_Name": [
    {
      "Column_One": "https://grabz.it/",
      "Column_Two": "Found"
    },
    {
      "Column_One": "http://dfadsdsa.com/",
      "Column_Two": "Missing"
    }]
}

首先必须记住,将向处理程序发送所有已抓取的数据,其中可能包括无法转换为JSON或XML对象的数据。 因此,在处理之前,必须检查您接收到的数据类型。

scrapeResult = ScrapeResult.ScrapeResult()

if scrapeResult.getExtension() == 'json':
    json = scrapeResult.toJSON()
    for json["Dataset_Name"] in obj:
        if obj["Column_Two"] == "Found":
            #do something
        else:
            #do something else
else:
    #probably a binary file etc save it
    scrapeResult.save("results/"+scrapeResult.getFilename())

上面的示例显示了如何遍历数据集的所有结果 Dataset_Name 并根据 Column_Two 属性。 另外,如果处理程序收到的文件不是JSON文件,那么它仅仅是 saved到结果目录。 虽然ScrapeResult类确实尝试确保所有发布的文件都来自GrabzIt的服务器,但在文件扩展名之前也应进行检查。 saved.

ScrapeResult方法

下面列出的是ScrapeResult类的所有方法,可用于处理抓取结果。

  • string getExtension() -获取由刮擦产生的任何文件的扩展名。
  • string getFilename() -获取刮擦产生的任何文件的文件名。
  • object toJSON() -转换由刮擦产生的任何JSON文件 into一个对象。
  • string toString() -将刮擦产生的任何文件转换为 string.
  • xml.etree.ElementTree toXML() -将由抓取产生的所有XML文件转换为XML元素。
  • boolean save(path) - saves由刮擦产生的任何文件,如果成功,则返回true。

调试

调试Python处理程序的最佳方法是从 网页抓取 页, save 您遇到问题的文件到可访问的位置,然后将该文件的路径传递给ScrapeResult类的构造函数。 这使您可以调试处理程序,而不必每次都进行新的抓取,如下所示。

scrapeResult = ScrapeResult.ScrapeResult("data.json");

#the rest of your handler code remains the same

控制刮擦

使用适用于Python的GrabzIt的Web Scraper API,您可以根据需要远程启动,停止,启用或禁用抓取。 如以下示例所示,这是刮擦的ID以及新的刮擦状态被传递到 SetScrapeStatus 方法。

client = GrabzItScrapeClient.GrabzItScrapeClient("Sign in to view your Application Key", "Sign in to view your Application Secret")
//Get all of our scrapes
myScrapes = client.GetScrapes()
if (len(myScrapes) == 0)
{
    raise Exception('You have not created any scrapes yet! Create one here: https://grabz.it/scraper/scrape.aspx')
}
//Start the first scrape
client.SetScrapeStatus(myScrapes[0].ID, "Start")
if (len(myScrapes[0].Results) > 0)
{
    //re-send first scrape result if it exists
    client.SendResult(myScrapes[0].ID, myScrapes[0].Results[0].ID);
}

GrabzItScrapeClient方法和属性

下面列出的是GrabzItScrapeClient类的所有方法和属性,可用于控制状态抓取。

  • GrabzItScrape[] GetScrapes() -将所有用户抓取作为GrabzItScrape对象的数组返回。
  • GrabzItScrape GetScrape(id) -返回代表所需抓取的GrabzItScrape对象。
  • SetScrapeProperty(id, property) -设置 刮擦的性质 如果成功,则返回true。
  • SetScrapeStatus(id, status) -设置刮擦的状态(“开始”,“停止”,“启用”,“禁用”),如果成功,则返回true。
  • SendResult(id, resultId) -重新发送抓取的结果,如果成功,则返回true。
    • 可以从GetScrape方法中找到刮擦ID和结果ID。
  • SetLocalProxy(proxyUrl) -将本地代理服务器设置为用于所有请求。