小编elM*_*ero的帖子

scrapy response.xpath使用默认命名空间返回xml文档上的空数组,而response.re工作

我是新手,我正在玩scrapy shell尝试抓取这个网站:www.spiegel.de/sitemap.xml

我做到了

scrapy shell "http://www.spiegel.de/sitemap.xml"
Run Code Online (Sandbox Code Playgroud)

当我使用时,它工作得很好

response.body 
Run Code Online (Sandbox Code Playgroud)

我可以看到整个页面包括xml标签

但是例如:

response.xpath('//loc') 
Run Code Online (Sandbox Code Playgroud)

根本不会工作.

我得到的结果是一个空数组

response.selector.re('somevalidregexpexpression') 
Run Code Online (Sandbox Code Playgroud)

会工作

任何想法可能是什么原因?可能与编码有关吗?该网站不是utf-8

我在Win 7上使用python 2.7.我在另一个站点(dmoz)上尝试了xpath(),它工作正常.

python xml xpath scrapy default-namespace

9
推荐指数
1
解决办法
2257
查看次数

有没有反应方式来存储状态中的可变类实例对象?

不应直接改变 React 状态。但是,如果状态是一个类的实例,它应该是可变的,它有自己的方法。除了必须深度克隆并使用新参数重新实例化对象之外,还有其他方法吗?

一般而言:在父组件中创建的类对象在子组件中使用,同时在父状态(通过道具/上下文传递)保持其属性的反应方式是什么?

示例类

class Car{
    constructor(data){
        this.data = data
    }
    changeColor = (newcolor) => this.data.color = newcolor
}
Run Code Online (Sandbox Code Playgroud)

示例父组件

const App = ({data}) => {
 const [car, setCar] = useState(new Car(data))
  return (
    <div>
      <CarViewer car={car} />
    </div>
  );
};

Run Code Online (Sandbox Code Playgroud)

示例子组件

const CarViewer = ({car}) => {
  return (
    <div>
      The color is: {car.data.color}
    <button onClick={()=>car.changeColor("blue")}>Change color to blue </button>
    </div>
  );
};
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-hooks use-state

7
推荐指数
2
解决办法
1007
查看次数