主文件代码里面
import requests
import selectorlib
URL = 'http://programmer100.pythonanywhere.com/tours/'
HEADERS = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
def scrape(url):
response = requests.get(url,headers=HEADERS)
source = response.text
return source
def read(extracted):
with open("data.txt",'r') as file:
return file.read()
def extract(source):
extractor = selectorlib.Extractor.from_yaml_file("extract.yaml")
value = extractor.extract(source)['tours']
return value
def send_email():
print("Email send")
def store(extracted):
with open("data.txt",'w') as file:
file.write(extracted+'\n')
if __name__ == "__main__":
scalped = scrape(URL)
extracted = extract(scalped)
print(extracted)
store(extracted)
content = read(extracted)
if extracted != "No upcoming tours":
if extracted not in "data.txt":
send_email()
_________________________________________________
----error
/usr/local/bin/python3.12 /Users/admin/Desktop/CV/main.py
Traceback (most recent call last):
File "/Users/admin/Desktop/CV/main.py", line 32, in <module>
extracted = extract(scalped)
^^^^^^^^^^^^^^^^
File "/Users/admin/Desktop/CV/main.py", line 18, in extract
value = extractor.extract(source)['tours']
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/selectorlib/selectorlib.py", line 74, in extract
fields_data[selector_name] = self._extract_selector(selector_config, sel)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/selectorlib/selectorlib.py", line 78, in _extract_selector
if field_config.get("xpath") is not None:
^^^^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'get'
请帮助理解问题,为什么我总是收到此错误
我正在尝试解决这个问题。我尝试获取选择器,但它总是显示消息
这在 extract.yaml 文件中
tours:
css:'#displaytimer'
-------------这是我的全部代码-----
该错误是由于 YAML 文件中的小格式问题造成的。 您需要在 yaml 文件中的
:
之后提供空格。
喜欢
tours:
css: '#displaytimer'