【问题标题】:How to get a data miner to do specific search on web page?如何让数据挖掘者在网页上进行特定搜索?
【发布时间】:2014-04-10 17:19:26
【问题描述】:

我是 Python 新手,正在尝试使用 Pattern。我的目标是在从 IndoWordnet 中查找后获得一个代码,该代码将为我提供输入词的同义词。语言必须是孟加拉语。我已经有一个单词列表。但我不确定在 Pattern 的帮助下我可以在网络上搜索输入。我试过关注 http://arunrocks.com/easy-practical-web-scraping-in-python/ 。它没有多大帮助。我想从一个解析的网页开始,这就是我所做的。这也给了我们绝对链接。

from lxml.html import fromstring
from urllib2 import urlopen
def get_page(url) :
    html = urlopen(url).read()
    dom = fromstring(html)
    dom.make_links_absolute(url)
    return dom

dom = get_page('http://www.cfilt.iitb.ac.in/indowordnet/first?langno=3&queryword=%E0%A6%97%E0%A6%BE%E0%A6%A7%E0%A6%BE')

<Element html at 0x50b4840>

但在那之后我被困住了,因为我不知道如何使用模式进行特定搜索。请帮忙。

【问题讨论】:

    标签: python html web-scraping web-crawler lxml


    【解决方案1】:

    这比看起来要复杂一些,因为有一个 AJAX 请求可以获取您要抓取的数据,所以分两步完成:

    • 获取与您要查找的单词对应的特殊sid 值(它在label 内,id 属性等于sid
    • http://www.cfilt.iitb.ac.in/indowordnet/ajax/onto.jsp 发出另一个请求,传递您在第一步中获得的sid。例如,查看 sid=4827 的外观:http://www.cfilt.iitb.ac.in/indowordnet/ajax/onto.jsp?sid=4827

    这是代码。它打印所有的antology标签:

    from lxml.html import parse
    from urllib2 import urlopen
    
    SID_URL = 'http://www.cfilt.iitb.ac.in/indowordnet/ajax/onto.jsp?sid=%s'
    
    url = 'http://www.cfilt.iitb.ac.in/indowordnet/first?langno=3&queryword=%E0%A6%97%E0%A6%BE%E0%A6%A7%E0%A6%BE'
    tree = parse(urlopen(url))
    
    sid = tree.find('.//label[@id="sid"]').text
    
    tree = parse(urlopen(SID_URL % sid))
    for record in tree.xpath('//ontorecord'):
        print record.find('onto_label').text
    

    UPD(获取同义词):

    from lxml.html import parse
    from urllib2 import urlopen
    
    url = 'http://www.cfilt.iitb.ac.in/indowordnet/first?langno=3&queryword=%E0%A6%97%E0%A6%BE%E0%A6%A7%E0%A6%BE'
    tree = parse(urlopen(url))
    
    for label in tree.xpath('.//label[@id="words"]/a'):
        print label.text
    

    【讨论】:

    • @user3458145 好的,抱歉,有点误解了,因为我既不懂印地语也不懂孟加拉语。检查UPD 部分 - 应该给你所有的同义词。
    • @user3458145 我使用 chrome 开发者工具->网络选项卡来查看 AJAX 调用的进展情况。这与 python 无关——大部分内容都与 xpath 和网络抓取相关。
    • 如何获取'cfilt.iitb.ac.in/indowordnet/ajax/onto.jsp?sid=%s'的“%s”部分?
    • @user3458145 %ssid 的占位符 - 请参阅我提供的代码:sid = tree.find('.//label[@id="sid"]').text
    • 也许,有点过分了,但是否有可能获得同义词而不必每次都输入它们的网址?
    猜你喜欢
    • 2011-05-07
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    • 2013-11-05
    • 2015-05-15
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    相关资源
    最近更新 更多