对不起,我对使用Selenium和python进行网络抓取非常陌生。我正在尝试抓取html中具有以下部分的超级市场网站的内容
<div class="itemDescription">
<meta itemprop="priceCurrency" content="INR">
<meta itemprop="price" content="23.00">
<h4 class=""><strong class="price js-effective-mrp" data-currency="₹">₹ 23.00 </strong>
<s class="js-actual-mrp" style="display:none;"></s>
<br><a href="/fresh-onion-red-v-1-kg-p.php" class="">Fresh Onion Red <span class="item-quantity">1 Kg</span></a></h4>
</div>
我需要产品的价格,数量和名称。
下面是我编写的代码,但是没有正确解析元素。
div = driver.find_element_by_class_name('itemDescription')
sname =div.find_element_by_css_selector('a').get_attribute('href')
squantity =driver.find_elements_by_class_name('item-quantity')
sprice = driver.find_elements_by_xpath('//*[contains(concat( " ", @class, " " ), concat( " ", "js-effective-mrp", " " ))]')
请帮助
答案 0 :(得分:1)
尝试以价格购买xPath:
import React from "react";
import App from "../App";
class UserAuthenticationUI extends React.Component {
constructor(props) {
super(props);
this.app = React.createRef();
this.onClick = this.onClick.bind(this);
}
onClick(){
const newStateValue = 'new parent state value';
if(typeof this.props.setParentState !== 'undefined'){
this.props.setParentState(newStateValue);
}
}
render() {
const stateProps = this.props.stateVariable;
return (
<div>
<App ref={this.app} />
<div onClick={this.onClick} />
{console.log(stateProps)}
</div>
);
}
}
export default UserAuthenticationUI;
或者如果您想要所有货币:
//strong[@class='price js-effective-mrp' and @data-currency='₹']
此链接:
//strong[@class='price js-effective-mrp']
这是数量:
//div[@class='itemDescription']//a
示例:
//span[@class = 'item-quantity']
根据您的反馈,您不能从列表中获取文本,但是可以从列表中的每个元素中获取文本,如下所示:
sname = driver.find_element_by_xpath("//div[@class='itemDescription']//a")
squantity = driver.find_element_by_xpath("//span[@class = 'item-quantity']")
sprice = driver.find_element_by_xpath("//strong[@class='price js-effective-mrp' and @data-currency='₹']")
print(squantity.text) # prints quantity
print(sname.text) # prints name
print(sprice.text) # prints price
答案 1 :(得分:0)
为什么不尝试使用Synx的Xcuse这种逻辑,
String strProductDescription = driver.find_element_by_class_name('itemDescription').getText();
String arrString = strProductDescription.split("SomeDelimeter");
答案 2 :(得分:0)
对于 MRP ,您可以尝试以下操作:
sprice = driver.find_element_by_css_selector('strong.price.js-effective-mrp')
然后您可以使用.text方法提取文本:
print(sprice.text)
数量
squantity = driver.find_element_by_css_selector('span.item-quantity')
print(squantity.text)
姓名:
sname = driver.find_element_by_xpath("//div[@class='itemDescription']//a")
print(sname.text)
请注意,使用以下xpath://div[@class='itemDescription']//a
将得到此Fresh Onion Red 1 Kg
作为输出。
基本上新鲜洋葱红是一个文本节点。