Python 在下面的场景中使用scrapy时,如何处理sub和sup?
我试图从下面显示的HTML格式中提取问题Python 在下面的场景中使用scrapy时,如何处理sub和sup?,python,xpath,web-scraping,scrapy,scrapy-spider,Python,Xpath,Web Scraping,Scrapy,Scrapy Spider,我试图从下面显示的HTML格式中提取问题 <li > <h3 > Number Theory - Factors < /h3 > <p lang = "title" > How many factors of 2 < sup > 5 < /sup > * 3 < sup > 6 < /sup > * 5 < sup > 2 < /sup > are perfe
<li >
<h3 > Number Theory - Factors < /h3 >
<p lang = "title" > How many factors of 2 < sup > 5 < /sup > * 3 < sup > 6 < /sup > * 5 < sup > 2 < /sup > are perfect squares?< /p >
<ol class = "xyz" >
<li > 18 < /li >
<li > 24 < /li >
<li > 36 < /li >
<li > 8 < /li >
< / ol >
<ul class="exp">
<li class="grey fleft">
<span class="qlabs_tooltip_bottom qlabs_tooltip_style_33" style="cursor:pointer;">
<span>
<strong>Correct Answer</strong>Choice (B).</br>24
</span> Correct answer
</span>
</li>
<li class="primary fleft">
<a href="factors_3.shtml">Explanatory Answer</a>
</li>
<li class="grey1 fleft">Factors - Perfect Squares</li>
<li class="orange flrt">Medium</li>
</ul>
</li>
数论-因子
25*36*52中有多少因子是完美的正方形?
18
24
36
8
-
正确答案选择(B)。24
正确答案
-
因子-完美正方形
中等
我的问题可以从XPath表达式normalize space(//p[@class=“soln”])中提取出来
XPath表达式提取并提供了以下文本
24*53*74中有多少因子是奇数?
我如何在sub和sup中获取问题?
可能性1:我得到的问题是“24*53*74的因子中有多少是奇数?而不会丢失sub或sup”
可能性2我得到的问题是“2^4*5^3*7^4中有多少因子是奇数?基本上我不想改变问题的含义?”这不太好,但我们可以用
^
预先替换
,并删除剩下的
:
In [1]: response = response.replace(body=response.body.replace("<sup>", "^").replace("</sup>", ""))
In [2]: response.xpath('normalize-space(//p[@lang="title"])').extract_first()
Out[2]: u'How many factors of 2 ^ 5 * 3 ^ 6 * 5 ^ 2 are perfect squares?'
[1]中的:response=response.replace(body=response.body.replace(“,”^”).replace(“,”)
[2]中的response.xpath('normalize-space(//p[@lang=“title”])。extract_first()
Out[2]:u‘2^5*3^6*5^2的因子中有多少是完美的平方?’
我不太熟悉screpy,但我可以添加一些用java编写的代码示例,这对您很有帮助
// get inner html of your question with `sup` or `sub` tags
String question = driver.findElement(By.xpath("//p[@lang = 'title'] ")).getAttribute("innerHTML");
// Replace the tags with symbols
String newQuestion = question.replace("<sup>", "^").replace("</sup>", "");
System.out.println(newQuestion);
//使用'sup'或'sub'标记获取问题的内部html
String question=driver.findElement(By.xpath(“//p[@lang='title']”);
//用符号替换标记
字符串newQuestion=question.replace(“,”^”).replace(“,”);
System.out.println(newQuestion);
你能清楚地解释一下发生了什么以及你想要什么吗。您提供的描述似乎与您添加的html不相关。是否有任何方法可以让问题保持原样而不改变其含义?我更新了我的问题@Tuks