请解决selectorlib的问题,收到此消息但无法理解

问题描述 投票:0回答:1

主文件代码里面


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'

-------------这是我的全部代码-----

python web-scraping selector
1个回答
0
投票

该错误是由于 YAML 文件中的小格式问题造成的。 您需要在 yaml 文件中的

:
之后提供空格。 喜欢

tours:
  css: '#displaytimer'
© www.soinside.com 2019 - 2024. All rights reserved.