📜  Python|使用正则表达式和 urllib 解析网站

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

Python|使用正则表达式和 urllib 解析网站

让我们讨论一下使用Python进行解析的概念。在Python中,我们有很多模块,但是对于解析,我们只需要urllibre ie 正则表达式。通过使用这两个库,我们可以获取网页上的数据。

请注意,网站解析意味着获取整个源代码并且我们想要使用给定的 url 链接进行搜索,它会给您输出作为您无法理解的大量 HTML 内容的输出。让我们看一下带有解释的演示,让您更多地了解解析。

代码 #1:需要的库

# importing libraries
import urllib.request
import urllib.parse
import re

代码#2:

url = 'https://www.geeksforgeeks.org/'
values = {'s':'python programming',
          'submit':'search'}

我们已经定义了一个 url 和一些我们想要搜索的相关值。请记住,我们将值定义为字典,在这个键值对中,我们定义Python编程搜索定义的 url。

代码#3:

data = urllib.parse.urlencode(values)        
data = data.encode('utf-8')                  
req = urllib.request.Request(url, data)      
resp = urllib.request.urlopen(req)    
         
respData = resp.read()                      

在第一行中,我们对之前定义的值进行编码,然后(第 2 行)我们对机器可以理解的相同数据进行编码。
在第 3 行代码中,我们请求定义 url 中的值,然后使用模块urlopen()打开该 HTML 的 Web 文档。
在最后一行read()将帮助逐行读取文档并将其分配给respData命名变量。

代码 #4:

paragraphs = re.findall(r'

(.*?)

', str(respData))    for eachP in paragraphs:     print(eachP)

为了提取相关数据,我们应用正则表达式。第二个参数必须是字符串类型,如果我们想打印数据,我们应用简单的打印函数。下面是几个例子:

示例 #1:

import urllib.request
import urllib.parse
import re
   
url = 'https://www.geeksforgeeks.org/'
values = {'s':'python programming',
          'submit':'search'}
   
data = urllib.parse.urlencode(values)
data = data.encode('utf-8')
req = urllib.request.Request(url, data)
resp = urllib.request.urlopen(req)
respData = resp.read()
   
paragraphs = re.findall(r'

(.*?)

',str(respData))     for eachP in paragraphs:     print(eachP)

输出:

示例 #2:

import urllib.request
import urllib.parse
import re
   
url = 'https://www.geeksforgeeks.org/'
values = {'s':'pandas',
          'submit':'search'}
   
data = urllib.parse.urlencode(values)
data = data.encode('utf-8')
req = urllib.request.Request(url, data)
resp = urllib.request.urlopen(req)
respData = resp.read()
   
paragraphs = re.findall(r'

(.*?)

',str(respData))     for eachP in paragraphs:     print(eachP)

输出: