scrapy的坑

查看 70|回复 4
作者:milu1123   
各位大大,练习爬虫的时候遇到了一个这样的坑,
可以正常运行,就是一直报下列(红色标记)的这个错误,我该如何解决呢??
[color=]2023-05-26 10:44:49 [py.warnings] WARNING: C:\Python311\Lib\site-packages\scrapy\selector\unified.py:83: UserWarning: Selector got both text and root, r
[color=]oot is being ignored.
[color=]  super().__init__(text=text, type=st, root=root, **kwargs)
{'img_src': 'https://pic.netbian.com/uploads/allimg/230428/002509-1682612709437f.jpg'}
{'img_src': 'https://pic.netbian.com/uploads/allimg/210604/200017-16228080178825.jpg'}
{'img_src': 'https://pic.netbian.com/uploads/allimg/220802/231950-165945359015c6.jpg'}
{'img_src': 'https://pic.netbian.com/uploads/allimg/230522/000415-168468505534bb.jpg'}
[color=]2023-05-26 10:44:49 [py.warnings] WARNING: C:\Python311\Lib\site-packages\scrapy\selector\unified.py:83: UserWarning: Selector got both text and root, r
[color=]oot is being ignored.
[color=]  super().__init__(text=text, type=st, root=root, **kwargs)
{'img_src': 'https://pic.netbian.com/uploads/allimg/230525/000822-1684944502e3d1.jpg'}
[color=]2023-05-26 10:44:49 [py.warnings] WARNING: C:\Python311\Lib\site-packages\scrapy\selector\unified.py:83: UserWarning: Selector got both text and root, r
[color=]oot is being ignored.
[color=]  super().__init__(text=text, type=st, root=root, **kwargs)
{'img_src': 'https://pic.netbian.com/uploads/allimg/230406/232451-1680794691e0dc.jpg'}
{'img_src': 'https://pic.netbian.com/uploads/allimg/230514/181328-16840592087e64.jpg'}
[color=]2023-05-26 10:44:49 [py.warnings] WARNING: C:\Python311\Lib\site-packages\scrapy\selector\unified.py:83: UserWarning: Selector got both text and root, r
[color=]oot is being ignored.
  super().__init__(text=text, type=st, root=root, **kwargs)

爬虫, 我该

神心恼   

from scrapy.selector import Selector
sel = Selector(text='your text')
改成
from scrapy.selector import Selector
sel = Selector(text=None)
神心恼   

这个错误通常是由于在使用 Selector 类时,同时传递了 text 和 root 参数导致的。这个错误是因为 Selector 类的初始化方法期望只有一个参数,即 text。如果您同时传递了 text 和 root 参数,则会引发这个错误。
要解决这个问题,您可以将 text 参数设置为 None,这样 Selector 类就会使用默认的文本选择器来选择元素。
milu1123
OP
  


神心恼 发表于 2023-5-26 10:56
from scrapy.selector import Selector
sel = Selector(text='your text')

不知道如何引用了。。
import scrapy
class MeinvSpider(scrapy.Spider):
    name = "meinv"
    allowed_domains = ["www.netbian.com"]
    start_urls = ["https://pic.netbian.com/"]
    def parse(self, resp, **kwargs):
        li_list = resp.xpath("//div[@class='slist']/ul/li")
        for li in li_list:
            href = li.xpath("./a/@href").extract_first()
            #print(resp.urljoin(href))
            yield scrapy.Request(
                url=resp.urljoin(href),
                method='get',
                callback=self.parse_1,
                dont_filter=True
            )
    def parse_1(self, resp, **kwargs):
        img_src = resp.xpath("//div[@class='photo-pic']/a/img/@src").extract_first()
        url = resp.urljoin(img_src)
        dic = {
            "img_src":url
        }
        yield dic
这是源代码
milu1123
OP
  


神心恼 发表于 2023-5-26 11:03
这个错误通常是由于在使用 Selector 类时,同时传递了 text 和 root 参数导致的。这个错误是因为 Selector  ...

不知道在哪里设置,,,,
下面是源代码
import scrapy
class MeinvSpider(scrapy.Spider):
    name = "meinv"
    allowed_domains = ["www.netbian.com"]
    start_urls = ["https://pic.netbian.com/"]
    def parse(self, resp, **kwargs):
        li_list = resp.xpath("//div[@class='slist']/ul/li")
        for li in li_list:
            href = li.xpath("./a/@href").extract_first()
            #print(resp.urljoin(href))
            yield scrapy.Request(
                url=resp.urljoin(href),
                method='get',
                callback=self.parse_1,
                dont_filter=True
            )
    def parse_1(self, resp, **kwargs):
        img_src = resp.xpath("//div[@class='photo-pic']/a/img/@src").extract_first()
        url = resp.urljoin(img_src)
        dic = {
            "img_src":url
        }
        yield dic
您需要登录后才可以回帖 登录 | 立即注册

返回顶部