【爬虫问题】如果想爬取网页上查询结果, 有什么方法?



  • 如果想爬取页面上查询结果, 有什么方法? 例如想读取页面里loadSearchResults()的结果?

    谢谢。


  • 太阁x英雄榜

    @Jing_Shen

    你好!感谢你的提问!

    首先,可以查查看这个搜索引擎是否有免费API提供,如果有的话直接调用即可;比如New York Times新闻的API:https://developer.nytimes.com/

    如果没有API的话,可以爬取页面HTML,然后解析html中的结果列表即可。这里要看您的爬虫使用什么语言,一般都有对应的html解析包。比如Java有jsoup包,Python有默认自带的HTMLParser 以及 SGMLParser等。

    这里有一段python爬取百度结果列表的爬虫代码,供您参考:

    #coding: utf-8
    import sys
    import urllib
    import urllib2
    from BeautifulSoup import BeautifulSoup
     
    question_word = "吃货 程序员"
    url = "http://www.baidu.com/s?wd=" + urllib.quote(question_word.decode(sys.stdin.encoding).encode('gbk'))
    htmlpage = urllib2.urlopen(url).read()
    soup = BeautifulSoup(htmlpage)
    print len(soup.findAll("table", {"class": "result"}))
    for result_table in soup.findAll("table", {"class": "result"}):
        a_click = result_table.find("a")
        print "-----标题----\n" + a_click.renderContents()#标题
        print "----链接----\n" + str(a_click.get("href"))#链接
        print "----描述----\n" + result_table.find("div", {"class": "c-abstract"}).renderContents()#描述
        print
    

    Source: http://www.oschina.net/code/snippet_862533_32580

    不知道您遇到的case是怎样的,如果可以提供更详细的信息,可以提供更具体的帮助。



  • 如果网页某些内容不是直接渲染在HTML里面,而是通过前端异步获取再通过js计算插入结果,这时候不能使用直接解析HTML。需要先引用拥有JavaScript rendering service的模块(比如Splash、PhantomJS、Selenium)进行计算,然后再解析HTML才能得到结果。

    (我是路过的吃瓜群众)


  • 太阁x英雄榜

    @Wenzhe 哈哈 感谢热心的吃瓜群众


 

与 BitTiger Community 的连接断开,我们正在尝试重连,请耐心等待