我是新手,我正在玩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(),它工作正常.
不应直接改变 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)