Python爬虫:解决requests.get()中'params'未定义错误
Python爬虫:解决requests.get()中'params'未定义错误
在使用Python的requests库进行网页爬取时,我们经常使用requests.get()函数来获取网页内容。然而,有时我们会遇到NameError: name 'params' is not defined的错误。
本文将介绍这个错误的原因,并提供解决方案,帮助你顺利进行网页爬取。
错误分析
'params' is not defined错误意味着你在调用requests.get()函数时,传递了一个名为params的参数,但该参数在你的代码中没有被定义。
通常情况下,params参数用于向目标URL传递查询参数。例如,如果你想获取百度搜索结果页,你可以使用以下代码:
import requests
url = 'https://www.baidu.com/s'
params = {'wd': 'Python'}
response = requests.get(url, params=params)
print(response.text)
在这个例子中,params参数是一个字典,它包含了一个键值对:'wd': 'Python'。这表示我们想搜索关键词“Python”。
如果你在代码中没有定义params变量,或者你没有传递任何查询参数,那么就应该将params参数从requests.get()函数中移除。
解决方案
根据提供的代码,可以看到在发起HTTP请求时使用了一个params参数,但是在代码中并没有定义params变量,所以会报错。
如果不需要传递任何参数,可以直接将params参数移除。
以下是修改后的代码:
import requests
from bs4 import BeautifulSoup
# 定义目标网页的URL
url = 'http://www.dongni.cc/vodshow/1178.html'
# 发起HTTP请求
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.55'
}
response = requests.get(url=url, headers=headers)
# 解析网页内容
soup = BeautifulSoup(response.text, 'html.parser')
# 找到所有视频和音频的链接
video_links = soup.select('a[href$='.mp4']')
audio_links = soup.select('a[href$='.mp3']')
# 下载视频和音频文件
for link in video_links:
video_url = link['href']
video_title = link.text
video_response = requests.get(video_url)
with open(f'{video_title}.mp4', 'wb') as f:
f.write(video_response.content)
for link in audio_links:
audio_url = link['href']
audio_title = link.text
audio_response = requests.get(audio_url)
with open(f'{audio_title}.mp3', 'wb') as f:
f.write(audio_response.content)
修改后的代码中移除了params参数,并对headers的赋值方式进行了修正,使用了正确的字典格式。
希望这篇文章能够帮助你解决'params' is not defined错误,并顺利完成你的网页爬取任务!
原文地址: https://www.cveoy.top/t/topic/fQ7e 著作权归作者所有。请勿转载和采集!