📜  Python| Web Scraping 世界中的工具

📅  最后修改于: 2022-05-13 01:55:35.181000             🧑  作者: Mango

Python| Web Scraping 世界中的工具

网页抓取可以使用多种工具或使用Python中的不同框架来完成。有多种选项可用于从网页中抓取数据,每种选项都适合不同的需求。

首先,让我们了解网络抓取和网络抓取之间的区别。网络爬虫用于使用机器人(也称为爬虫)对页面上的信息进行索引。另一方面,Web 抓取是一种使用机器人(也称为 Scrapers)自动提取信息/内容的方式。

让我们看看一些最常用的 Python3 网络抓取工具:

  1. 网址库2
  2. 要求
  3. 美丽汤
  4. 文件格式
  5. Selenium
  6. 机械汤

在所有可用的框架/工具中,只有urllib2预装了Python。因此,如果需要,需要安装所有其他工具。让我们详细讨论所有这些工具。

  1. Urllib2 : Urllib2是一个用于获取 URL 的Python模块。它以 urlopen函数的形式提供了一个非常简单的接口,它能够使用不同的协议(如 HTTP、FTP 等)获取 URL。
    # Using urllib2 module
    from urllib.request import urlopen
      
    html = urlopen("http://geeksforgeeks.org")
      
    print(html.read())
    

    输出 :
    GfGurllib2

  2. 请求: Requests没有预装Python。 Requests 允许发送 HTTP/1.1 请求。可以使用简单的Python字典添加标题、表单数据、多部分文件和参数,并以相同的方式访问响应数据。

    可以使用 pip 来安装请求。

    pip install requests
    # Using requests module
    import requests
      
    # get URL
    req = requests.get('https://www.geeksforgeeks.org/')
      
    print(req.encoding)     
    print(req.status_code) 
    print(req.elapsed)     
    print(req.url)         
    print(req.history)     
    print(req.headers['Content-Type'])
    

    输出 :
    GfGrequests

  3. BeautifulSoup : Beautiful soup是一个可以使用不同解析器的解析库。 Beautiful Soup 的默认解析器来自 Python 的标准库。它创建了一个解析树,可用于从 HTML 中提取数据;用于剖析文档并提取所需内容的工具包。它会自动将传入文档转换为 Unicode,将传出文档自动转换为 UTF-8。

    pip可用于安装 BeautifulSoup :

    pip install beautifulsoup4
    # importing BeautifulSoup form
    # bs4 module
    from bs4 import BeautifulSoup
      
    # importing requests
    import requests
      
    # get URL
    r = requests.get("https://www.geeksforgeeks.org")
      
    data = r.text
    soup = BeautifulSoup(data)
      
    for link in soup.find_all('a'):
        print(link.get('href'))
    

    输出 :
    GFG美汤

  4. Lxml: Lxml是一个高性能、生产质量的 HTML 和 XML 解析库。如果用户需要速度,那就选择 Lxml。 Lxml 有许多模块,其中一个模块是etree ,它负责使用这些元素创建元素和结构。

    可以通过使用pip工具将 lxml 安装为Python包来开始使用它:

    pip install lxml
    # importing etree from lxml module
    from lxml import etree
      
    root_elem = etree.Element('html')
    etree.SubElement(root_elem, 'head')
    etree.SubElement(root_elem, 'title')
    etree.SubElement(root_elem, 'body')
      
    print(etree.tostring(root_elem, pretty_print = True).decode("utf-8"))
    

    输出 :
    GFGlxml

  5. Selenium :一些网站使用 javascript 来提供内容。例如,他们可能会等到您在页面上向下滚动或单击按钮后再加载某些内容。对于这些网站,需要selenium。 Selenium是一种自动化浏览器的工具,也称为网络驱动程序。它还带有Python绑定,可直接从您的应用程序控制它。

    pip包用于安装selenium :

    pip install selenium
    # importing webdriver from selenium module
    from selenium import webdriver
      
    # path for chromedriver
    path_to_chromedriver ='/Users/Admin/Desktop/chromedriver'
      
    browser = webdriver.Chrome(executable_path = path_to_chromedriver)
      
    url = 'https://www.geeksforgeeks.org'
    browser.get(url)
    

    输出 :
    GfG硒
    GfG硒2

  6. MechanicalSoup : MechanicalSoup是一个Python库,用于自动与网站交互。它会自动存储和发送 cookie,跟踪重定向,并且可以跟踪链接和提交表单。它不执行 JavaScript。

    可以使用以下命令安装 MechanicalSoup :

    pip install MechanicalSoup
    # importing mechanicalsoup
    import mechanicalsoup
      
    browser = mechanicalsoup.StatefulBrowser()
    value = browser.open("http://geeksforgeeks.org/")
    print(value)
      
    value1 = browser.get_url()
    print(value1)
      
    value2 = browser.follow_link("forms")
    print(value2)
      
    value = browser.get_url()
    print(value)
    
  7. Scrapy: Scrapy是一个开源和协作的网络爬虫框架,用于从网站中提取所需的数据。它最初是为网页抓取而设计的。它可用于管理请求、保留用户会话遵循重定向和处理输出管道。

    安装 scrapy 有两种方法:

    1. 使用点子:
      pip install scrapy
    2. 使用 Anaconda:首先安装AnacondaMiniconda ,然后使用以下命令安装 scrapy:
      conda install -c conda-forge scrapy
    # importing scrapy module
    import scrapy
      
    class GeeksSpider(scrapy.Spider):
          
        name = "geeks_spider"
          
        start_urls = ['https://www.geeksforgeeks.org']
          
        # Parse function
        def parse(self, response):
              
            SET_SELECTOR = 'geeks'
            for geek in response.css(SET_SELECTOR):
                pass
    

    使用以下命令运行scrapy代码:

    scrapy runspider samplescapy.py

    输出 :GfGscrapy

上面讨论的模块是 Python3 最常用的抓取工具。虽然还有一些像 Mechanize、Scrapemark 这样的 Python3 不再兼容但不再兼容。

参考 :

  1. https://elitedatascience.com/python-web-scraping-libraries
  2. Python
  3. http://blog.datahut.co/beginners-guide-to-web-scraping-with-python-lxml/