看不明白我到底那里错了,耗了一个多小时了
class YieBao_Spider(object):
def __int__(self):
self.url = "https://tieba.baidu.com/f?"
self.headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/112.0.0.0 Safari/537.36"}
#
def get_data_index(self):
params = {
"kw": "周传雄",
"ie": "utf-8",
"fn": "0"
}
url = self.url + urlencode(params)
response = requests.get(url, headers=self.headers)
response.encoding = "utf-8"
# 判断响应状态码是不是200
if response.status_code == 200:
return response.text
else:
return None
def write_data_index(self, response):
file_name = "贴吧.html"
with open("./贴吧/" + file_name, "a", encoding="utf-8") as f:
f.write(response)
print("保存成功")
def run(self):
response = self.get_data_index()
self.write_data_index(response)
if __name__ == '__main__':
sr = YieBao_Spider()
sr.run()
报错
Traceback (most recent call last):
File "F:\pythonproject\爬虫\requests基础\requests0.py", line 85, in
sr.run()
File "F:\pythonproject\爬虫\requests基础\requests0.py", line 79, in run
response = self.get_data_index()
File "F:\pythonproject\爬虫\requests基础\requests0.py", line 63, in get_data_index
url = self.url + urlencode(params)
AttributeError: 'YieBao_Spider' object has no attribute 'url'
该回答引用ChatGPT
看起来您的代码有一个拼写错误,导致在实例化类时没有正确设置实例变量。在YieBao_Spider类的构造函数中,您将__init__错误地拼写成了__int__,这会导致类没有正确初始化self.url属性,因此在调用get_data_index方法时会出现AttributeError。
要解决此问题,请将__int__改为__init__,这将确保您的类在实例化时正确设置self.url属性。例如:
class YieBao_Spider(object):
def __init__(self):
self.url = "https://tieba.baidu.com/f?"
self.headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/112.0.0.0 Safari/537.36"}
# 省略 get_data_index 和 write_data_index 方法
def run(self):
response = self.get_data_index()
self.write_data_index(response)
if __name__ == '__main__':
sr = YieBao_Spider()
sr.run()
注意,__init__方法的正确拼写是双下划线 + init + 双下划线,这是Python中约定的构造函数名称。
您的代码中__init__方法名中的int拼写错误应该是__init__,将int修改为init,并将self.url和self.headers提前定义即可解决这个问题。
以下是修改后的代码
from urllib.parse import urlencode
import requests
class YieBao_Spider(object):
def __init__(self):
self.url = "https://tieba.baidu.com/f?"
self.headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/112.0.0.0 Safari/537.36"
}
def get_data_index(self):
params = {
"kw": "周传雄",
"ie": "utf-8",
"fn": "0"
}
url = self.url + urlencode(params)
response = requests.get(url, headers=self.headers)
response.encoding = "utf-8"
# 判断响应状态码是不是200
if response.status_code == 200:
return response.text
else:
return None
def write_data_index(self, response):
file_name = "贴吧.html"
with open("./贴吧/" + file_name, "a", encoding="utf-8") as f:
f.write(response)
print("保存成功")
def run(self):
response = self.get_data_index()
self.write_data_index(response)
if __name__ == '__main__':
sr = YieBao_Spider()
sr.run()