我正在使用Scrapy Python尝试从网站上grep数据。 我如何使用Xpath grep这个结构?
"Section": {
Need this text_1 :
[45767 : Win_1 : TEST_1]
[1232004 : Win_2 : TEST_2]
[122004: Win_3 : TEST_3]
,
Need this text_2:
[234 : Win_E : TEST_E]
[3476 : Win_C : TEST_C]
,
Need this text_3:
[85567 : Win_T : TEST_T]
[435656 : Win_A : TEST_A]
[980: Win_Z : TEST_Z]
}
我希望输出具有以下结构:
$ java -jar h2o.jar
如何创建适当的xpath选择以获取此结构? 我可以单独使用所有“h3”,所有“a”然后所有标签与类,但我如何匹配?
答案 0 :(得分:1)
GREP你说的?!大声笑,你完全可以将它命名为wron,但为了保持行话的清洁,理解你的解析/提取......这对于scrapy来说是新的吗?还是网络开发方面的东西?无论如何...我无法在这里一个答案教你如何xpth / regex就像一个专业人士...只有你能保持的方式,但我会投入我的意见。
首先,xpath是非常有用的,它涉及到必须建立到stadard的网站,这不会让他们说不好但是在你给的html snipet ...它的结构可以洙..我推荐css提取..这些是价值......
year = response.css('td.tmp_year a::text').extract()
outcome = response.css('td.tmp_outcome b::text').extract()
category= response.css('span.tmp_category::text').extract()
PRO-TIP:对于您认为必要的情况,您可以将网页保存为HTML文件,并通过引用它的直接文件路径来使用scrapy shell ...所以我将html片段保存到文件中我的桌面然后运行...
scrapy shell file:///home/scriptso/Desktop/letsGREPlol.html
无论如何......至于xpath ...因为你问了lol ...蛋糕。让我们比较xpath与cssand告诉我你可以看到......它?洛尔
response.css('td.tmp_outcome b :: text')。extract() 所以是一个td标签....并且类名是tmp_outcome,下一个节点是一个粗体标签...其中文本因此将其声明为带有:: text
的文本response.xpath( '// TD [@类= “tmp_outcome”] / B /文本()')。提取物() 所以xpath基本上是说我们在td标签的整个网站上用一个模式加星...然后是class = tmp_outcome,然后是粗体,然后在xpath中声明type / text()用于文本.... / @ href是因为..是的,你猜错了