使用Objective-C从网站“拉”图像和特定文本

时间:2014-01-11 08:16:37

标签: ios objective-c image web

顾名思义。我已经查看了这个问题的其他版本,但他们并没有完全按照我的要求去做。

我的目标是从网站提取数据。让我们说,例如,this pet adoption website。从这里,应用程序将能够指定您是否想要猫,狗,豚鼠,鸟,龙等等。然后,它会带您到ViewController显示:

  1. 动物的照片。
  2. 动物的名字。
  3. 动物'关于我'。
  4. 最后,动物的价格。
  5. 当然,我将能够显示所有信息,但我不擅长在线功能。

    如何检索上述信息并以可以用来制作动物视图的方式存储?

2 个答案:

答案 0 :(得分:1)

您只能通过javascript与网络视图对接。您只能传输'字符串数据'..所以为了获取图片,方法必须是:在JS端转换o base64编码数据,传输它并在objC中使用它然后重建UIImage。


不重新发明轮子我想建议我自己的项目(免责声明:自己的代码):

它为IOS和OSX提供了易于使用的Javascript-ObjC桥接 - 部分基于JSBridge项目的想法

https://github.com/Daij-Djan/DDEnhancedJSBridge

答案 1 :(得分:0)

这个答案很晚,但我认为它对你的未来仍有帮助。你可以去解析网站,这是正确的方法,但我会告诉你如何以不同的方式做到这一点,这也可以用来读取xml,html,.com,任何东西,以及.rss所以它可以阅读RSS Feed 在这里:

这可以得到你的第一段,如果你要求我会告诉你如何得到第二段等等。因此,如果你想赚钱改变你的扫描仪找到$标题将是名称,但如果它不告诉我,我会告诉你如何获得第二个标题或标题。看到这个和向下。我将向您展示如何从整个网站获取html或xml,以便您可以查看网站的整个代码并查找关于首先阅读网站,然后阅读代码并在代码中查看狗名称它在标题标签下或标题下是什么,并根据您的需要更改下面的代码阅读整篇文章以了解所有内容。以下是如何获取信息的主要代码。转到第二个代码块,了解如何在日志或控制台中获取您网站的代码。要查找您的图像相同的东西通过NSLog查找并查找任何图像链接,如www.example.com/images/image.jpg或image.png或image.gif或一些图像扩展名,并查看启动此代码的代码是什么它或者在html和xml中有100个图像代码,查找代码的网址,然后在扫描仪中使用它,将

更改为代码然后再确保图像的网址仍然存在,就像继续缩短它一样,直到除了url之外什么都没有。

所以你有

你想要:www.example.com/images/image.jpg

您可以使用下面的扫描仪并将

更改为<media:content url:\",然后扫描它直到它是静止的,所以如果您知道该部分将始终相同,那么将其扫描到那里然后扫描仪的第二部分以\"

结束

查看大字下面的第一个代码块?这是我们需要改变的部分 -

NSString * webString2222 = mastaString;

        NSScanner *stringScanner2222 = [NSScanner scannerWithString:webString2222];



        NSString *content2222 = [[NSString alloc] init];




        //Change <p> to suit your need like <description> or <h1>
        [stringScanner2222 scanUpToString:@"<p>" intoString:Nil];



        [stringScanner2222 scanUpToString:@"." intoString:&content2222];







        NSString *filteredTitle = [content2222 stringByReplacingOccurrencesOfString:@"<p>" withString:@""];

        description.text = filteredTitle;

在我们的案例中,我们将此部分更改为 -

[stringScanner2222 scanUpToString:@"<media:content url:\"" intoString:Nil];
                [stringScanner2222 scanUpToString:@"\">" intoString:&content2222];

现在它有了网址,但扫描仪的第一部分始终保持使用 -

NSString * filteredTitle = [content2222 stringByReplacingOccurrencesOfString:@&#34;

然后使用它来下载图像 -

NSURL * imageURL = [NSURL URLWithString:[filteredTitle stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
        NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation([UIImage imageWithData:[NSData dataWithContentsOfURL:imageURL]])];

        UIImage * image = [UIImage imageWithData:imageData];

        [imageView setImage:image];

//这是您的网址     NSURL * URL = [NSURL URLWithString:@&#34; URL HERE&#34;];     //这是你拉的数据(不要改变)     NSData * data = [NSData dataWithContentsOfURL:URL];

// Assuming data is in UTF8. (dont change)
NSString *string = [NSString stringWithUTF8String:[data bytes]];
//Your textView your not done.
description.text = string;



//Do this with your textview

NSString *webStringz = description.text;



// Leave this
NSString *mastaString;
mastaString = webStringz;
{
    NSString *webString2222 = mastaString;



    NSScanner *stringScanner2222 = [NSScanner scannerWithString:webString2222];



    NSString *content2222 = [[NSString alloc] init];




    //Change <p> to suit your need like <description> or <h1>
    [stringScanner2222 scanUpToString:@"<p>" intoString:Nil];



    [stringScanner2222 scanUpToString:@"." intoString:&content2222];







    NSString *filteredTitle = [content2222 stringByReplacingOccurrencesOfString:@"<p>" withString:@""];

    description.text = filteredTitle;


}
标题?相同的交易会将<p>更改为RSS <title><description>中的<title>。 图片 ?相同的交易改变了<p> to what ever your RSS or website uses to get a image to find But remember for both of them when you change the

`你看到你说stringByReplacingOccurences的链接也必须改变它。

然后你必须删除它并使你的代码像这样:

//This is your URL
        NSURL *URL = [NSURL URLWithString:@"URL HERE"];
        //This is the data your pulling (dont change)
        NSData *data = [NSData dataWithContentsOfURL:URL];

        // Assuming data is in UTF8. (dont change)
        NSString *string = [NSString stringWithUTF8String:[data bytes]];
        //Your textView your not done.
        description.text = string;
        NLog(@"%@", string)


        //Do this with your textview

        NSString *webStringz = description.text;



        // Leave this
        NSString *mastaString;
        mastaString = webStringz;

现在检查你的日志它显示你的整个网站html或rss代码然后你滚动并阅读它并找到你的图像链接并检查它之前的代码并将String Scanner更改为你的需求非常棒,你必须改变stringByReplacingOccurences。

就像我说用这种方法做的时候图像有点棘手但是XML解析比你学习它容易得多,哈哈。如果您要求,我会告诉您如何操作。 告诉我,如果您在浏览html或xml时遇到问题并再次指定哪个网站,我会通过查看,我将告诉您如何获得所需的一切。 确保:

如果您希望我向您展示如何在XML中进行评论。 如果您希望我向您展示如何查找第二段或图像或标题或其他只是评论。

如果你需要任何评论。

再见我提供的代码很有趣,任何错误只是评论! !!!!

:d