Sea*_*ean 2 python url parsing
import urllib.request
import urllib.parse
import re #regular equatuions
url = 'http://pythonprogramming.net/'
values = {'s': 'basics',
'submit':'search'} #this is how you search on most websites
data = urllib.parse.urlencode(values)
data= data.encode('utf-8')
req = urllib.request.Request('url', 'data')
resp = urllib.request.urlopen(req)
respData = resp.read()
#print(respData)
paragraphs = re.findall(r'<p>(.*?)</p>', str(respData))
for eachP in paragraphs:
print(eachP)
Run Code Online (Sandbox Code Playgroud)
这段代码来自我跟随的视频。我不明白为什么它在复制后不起作用。我试图理解错误,但它们确实有意义。网址有效,它是一个真正的网站。以下是我收到的错误消息:
C:\Python34\python.exe "C:/Users/S/PycharmProjects/untitled/Parsing practice.py"
Traceback (most recent call last):
File "C:/Users/Sean/PycharmProjects/untitled/Parsing practice.py", line 10, in <module>
req = urllib.request.Request('url', 'data')
File "C:\Python34\lib\urllib\request.py", line 266, in __init__
self.full_url = url
File "C:\Python34\lib\urllib\request.py", line 292, in full_url
self._parse()
File "C:\Python34\lib\urllib\request.py", line 321, in _parse
raise ValueError("unknown url type: %r" % self.full_url)
ValueError: unknown url type: 'url'
Run Code Online (Sandbox Code Playgroud)
我真的不知道这些是什么意思,因为我没有 200 行代码,只有 19 行。
您传入的是string 'url',而不是变量:
req = urllib.request.Request('url', 'data')
# ^^^^^
Run Code Online (Sandbox Code Playgroud)
这不是公认的 URL 格式。您打算传入变量(无引号):
req = urllib.request.Request(url, data)
Run Code Online (Sandbox Code Playgroud)
请注意,您对data.
因为你在第 10 行(回溯的前两行)传递了错误的值,你触发了urllib.request模块更深层次的问题(回溯的剩余行);该模块确实有 100 行。
| 归档时间: |
|
| 查看次数: |
10779 次 |
| 最近记录: |