【问题标题】:A web crawler in python. Where should i start and what should i follow? - Help neededpython中的网络爬虫。我应该从哪里开始,我应该遵循什么? - 需要帮助
【发布时间】:2010-07-29 05:32:17
【问题描述】:

我在 python 方面有中级知识。如果我必须在 python 中编写一个网络爬虫,我应该遵循什么以及我应该从哪里开始。有没有具体的tut?任何建议都会有很大帮助..谢谢

【问题讨论】:

    标签: python web-crawler


    【解决方案1】:

    我强烈建议您查看Scrapy。该库可以与 BeautifulSoup 或任何您喜欢的 HTML 解析器一起使用。我个人将它与 lxml.html 一起使用。

    开箱即用,您可以免费获得几样东西:

    • 并发请求,感谢 Twisted
    • CrawlSpider对象递归地在整个站点中寻找链接
    • 数据提取和处理的高度分离,充分利用并行处理能力

    【讨论】:

      【解决方案2】:

      您肯定需要一个 html 解析库。为此,您可以使用 BeautifulSoup。您可以在官方页面中找到大量用于获取 url 和处理返回的 html 的示例和教程:http://www.crummy.com/software/BeautifulSoup/

      【讨论】:

      • 谢谢.. :) 首先,我想知道我应该导入哪些库/模块?和这个一起?我的目标是编写一个简单的爬虫(没有多线程,如果重要的话)
      • BeautifulSoup 很容易使用。 "从 BeautifulSoup 导入 BeautifulSoup;soup = BeautifulSoup("""...""").
      【解决方案3】:

      如果您仍想从头开始编写,您将需要使用mechanize 模块。它包括模拟浏览器和自动获取 url 所需的一切。我将是多余的,还说 BeautifulSoup 用于解析您获取的任何 html。否则,我会选择 Scrapy...

      【讨论】:

        【解决方案4】:

        为什么不寻找已经满足您需要的existing code?如果您需要自己构建一个,仍然值得查看现有代码并对其进行解构以了解其工作原理。

        【讨论】:

        • 只是我还是个学习者,只有掌握了正确的基础知识,我才能理解某些事情。不过感谢您的帮助,我现在正在查看代码:)
        【解决方案5】:

        这取决于您的需求。如果你需要基本的网页抓取,那么 mechanize + BeautifulSoup 就可以了。

        如果您需要渲染 javascript,那么我会选择 Selenium,或 spynner。两者都很棒。

        【讨论】:

          【解决方案6】:

          IBM Developer Works 在此 https://www.ibm.com/developerworks/linux/library/l-spider/#N101C6 上有一篇文章。您可能希望使用其他人建议的库,但这会让您对流程有一个整体的了解。

          【讨论】:

            【解决方案7】:

            您可能需要的另一个好的库是用于解析提要。现在您已经拥有了用于 url 的 BeautifulSoup,您可以将 Feedparser 用于提要。 http://www.feedparser.org/

            【讨论】:

            • 欢迎来到 Stackoverflow (SO)。下次,只需使用新信息编辑您现有的答案:)
            【解决方案8】:
            import re, urllib
            
            textfile = file('depth_1.txt','wt')
            print "Enter the URL you wish to crawl.."
            print 'Usage  - "http://dynamichackerboys.blogspot.in" <-- With the double quotes'
            myurl = input("@> ")
            for i in re.findall('''href=["'](.[^"']+)["']''', urllib.urlopen(myurl).read(), re.I):
                    print i 
                    for ee in re.findall('''href=["'](.[^"']+)["']''', urllib.urlopen(i).read(), re.I):
                            print ee
                            textfile.write(ee+'\n')
            textfile.close()
            

            print '用法 - "http://dynamichackerboys.blogspot.in" ”) 对于我在 re.findall('''href="'["']''', urllib.urlopen(myurl).read(), re.I): 打印我 对于 re.findall('''href="'["']''', urllib.urlopen(i).read(), re.I) 中的 ee: 打印 textfile.write(ee+'\n') 文本文件.close()

            用于在网站中爬行

            【讨论】:

              猜你喜欢
              • 2018-12-20
              • 2014-02-15
              • 2013-12-08
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-03-21
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多