AttributeError:“Selector”对象没有属性“find”(Scrapy)

2024-05-17 17:46:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到的错误是:

  File "/anaconda/lib/python2.7/site-packages/scrapy/http/response/text.py", line 82, in urljoin
    return urljoin(get_base_url(self), url)
  File "/anaconda/lib/python2.7/urlparse.py", line 261, in urljoin
    urlparse(url, bscheme, allow_fragments)
  File "/anaconda/lib/python2.7/urlparse.py", line 143, in urlparse
    tuple = urlsplit(url, scheme, allow_fragments)
  File "/anaconda/lib/python2.7/urlparse.py", line 182, in urlsplit
    i = url.find(':')
AttributeError: 'Selector' object has no attribute 'find'

斯帕奇把电话回溯到我的蜘蛛网上:

^{pr2}$

此行在一个通用parse()方法中。我以前运行过很多次完全相同的语法,但从来没有遇到过错误,并且仔细阅读urllib的文档和源代码也没有得到任何结果。在

任何建议都将不胜感激!在


Tags: inpyurllib错误linesiteanaconda
2条回答

引发错误的因素

  • 您使用的环境python27
  • 你发送了一个刮擦选择器对象到urljoin

如何重新触发错误

  • 激活Pythonpython2.7环境

    • 用目标url www.bing.com打开一个破壳

      scrapy shell www.bing.com
      
    • scrapy.selector导入Selector,使用:

      from scrapy.selector import Selector
      
    • 从您的响应创建一个Selector对象

      selector_obj = Selector(response=response)
      
    • 使用response.urljoin连接Selector对象

      response.urljoin(selector_obj)
      
    • 同样的错误也会发生 enter image description here

如何修正你的错误

  • 使用type()或其他技术检查url变量,确保正确提取了所需的字符串

    for url in links:
        link_url = response.urljoin(url)
    
  • 使用python3.x而不是python2.7,当scrapy与python3.x一起运行时,错误消息将更加清晰易懂。(这里是python36环境中的相同错误)

enter image description here

相关问题 更多 >