如何在br标签之间刮取文本

时间:2014-09-24 11:37:27

标签: python selenium web web-scraping lxml

我正在尝试抓一个简单的网站http://hosted.where2getit.com/sharpsiica/index.html?form=locator_search&sku=ARM355&addressline=53203&zip=53203

我已尝试使用以下代码来删除名称和地址:

import lxml.html as lh    
from selenium import webdriver    
import time

browser = webdriver.Firefox()

browser.get('http://hosted.where2getit.com/sharpsiica/index.html?form=locator_search&sku=ARM355&addressline=53203&zip=53203')

time.sleep(5)

content = browser.page_source

tree = lh.fromstring(content)

name=tree.xpath('//table[@id="collection_poi"]/tbody/tr/td[@align="left"]/a/text()')

address=tree.xpath('//table[@id="collection_poi"]/tbody/tr/td[@align="left"]/text()')

print(name,address)

我正确地得到了名字,但是为了解决我收到太多不需要的数据的问题。我只需要姓名和地址。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

剥离它 -

address=[c.strip() for c in address]

希望有所帮助。

但我只是想知道, 为什么要提取整个地址和名称列表? 你不想做类似的事吗,

import lxml.html as lh
from selenium import webdriver
import time

browser = webdriver.Firefox()
browser.get('http://hosted.where2getit.com/sharpsiica/index.html?form=locator_search&sku=ARM355&addressline=53203&zip=53203')
time.sleep(5)
content = browser.page_source
tree = lh.fromstring(content)

for tr in tree.xpath('//*[@id="collection_poi"]//tr'):
    name=tr.xpath('.//*[@class="store_name"]//text()')
    name=[c.strip() for c in name]
    address=tr.xpath('.//*[@align="left"]//text()')
    address=[c.strip() for c in address]
    print(name,address)

您甚至可能想要从获得的列表中删除空元素,

address=filter(None, address)
print address

希望有所帮助: - )