如何使用" skype_c2c_container"来刮取电话号码?用Scrapy?

时间:2015-07-13 14:29:58

标签: python xpath web-scraping scrapy phone-number

我正在尝试在名为" skype_c2c_container"的范围之后删除文本。或" skype_c2c_container notranslate" (实际上是在网站上发布的电话号码)。

例如在本网站:http://adcamfabrications.co.uk/ 或在这一个:http://aandbairsystems.co.uk/

我知道如何提取网站上的所有文字,然后可能会使用电话号码的模式识别,但我相信有一种更简单的方法。我通过元名或div id或div名称提取文本,但无法设法如何对包含特定单词的跨度名称进行相同的操作(例如" skype")。

我试过的其中一个代码的示例:

 item["phone_number"] =response.xpath('//span[contains(@class, "Skype")] | //span[contains(@class, "skype")]').extract()

或:

item["phone_number"] =response.xpath("//span[(@skype_c2c_container)]").extract() 

我想要提取的例子:

<span class="skype_c2c_text_span">+44 (0) 1234 1234</span>

我想回复文字: &#34; +44(0)1234 1234&#34;

1 个答案:

答案 0 :(得分:2)

找到带有Tel文字的元素,然后获取以下文字兄弟

$ scrapy shell http://adcamfabrications.co.uk/
In [1]: response.xpath("//span[. = 'Tel']/following-sibling::text()").extract()[0].strip()
Out[1]: u'+44 (0) 1889 571690'

对于第二个网站:

$ scrapy shell http://aandbairsystems.co.uk/
In [1]: response.xpath("//td[@class='phonenumber']/text()").re(r"24 Hour cover Tel : (\d+ \d+)")[0]
Out[1]: u'01978 661999'