Python|使用正则表达式和 urllib 解析网站
让我们讨论一下使用Python进行解析的概念。在Python中,我们有很多模块,但是对于解析,我们只需要urllib和re 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)
输出: