从页面刮取特定元素

时间:2015-08-06 01:06:32

标签: python scrapy

我是python的新手,我正在研究使用scrapy来抓取页面上的特定元素。

我需要提取会员页面上列出的姓名和电话号码。

此脚本将获取整个页面,我可以添加/更改哪些内容才能获取这些特定元素?

    import scrapy

class DmozSpider(scrapy.Spider):
    name = "dmoz"
    allowed_domains = ["fali.org"]
    start_urls = [
        "http://www.fali.org/members/",
    ]

    def parse(self, response):
        filename = response.url.split("/?id=")[-2] + '%random%'
        with open(filename, 'wb') as f:
            f.write(response.body)

2 个答案:

答案 0 :(得分:0)

我看不到页面: http://www.fali.org/members/

而是重定向到主页。

这使得无法给出具体细节。

以下是一个例子:

-keep class in.intellicode.webservices.models.** { *; }
-keep class in.intellicode.models.** { *; }
-keep class in.intellicode.events.*{ *; }

-keepattributes Signature
-keepattributes *Annotation*
-keep class sun.misc.Unsafe { *; }

解析"佛罗里达州执照调查员协会(FALI)"从他们的主页。你可以获得浏览器插件,以帮助你找出xpaths。 Chrome上的XPath Helper让它变得简单。

那就是说 - 浏览上面发布的教程。因为你会有更多的问题我确定,这样的广泛问题在堆栈溢出方面并不好。

答案 1 :(得分:0)

由于shark3y声明in his answer start_url被重定向到主页。

如果你已阅读文档,你应该知道Scrapy开始从start_url抓取,并且它不知道你想要实现什么。

在您的情况下,您需要从http://www.fali.org/search/newsearch.asp开始,它会返回所有成员的搜索结果。现在,您可以设置Rule以浏览结果列表,并为找到的每个成员调用parse_detail方法,并按照结果分页中的链接进行操作。

parse_detail方法中,您可以浏览该成员的网站并提取您需要的所有信息。我猜你不需要像你在你的问题中的例子中那样需要整个网站,因为它会在你的计算机上生成大量数据 - 最后你还是要解析它。