我正在尝试做一些看似简单的事情...我试图从这个链接中删除路透社名单中的公司名称:
http://www.reuters.com/finance/markets/index?symbol=us!spx&sortBy=&sortDir=&pn=
然而,我只是无法访问公司名称!真的,在玩了很多xpath查询之后,我在访问表时遇到了问题。我想抓住像“3M公司”和“雅培实验室”这样的名字以下是我使用过的代码片段:
scrape = []
companies =[]
import lxml
import lxml.html
import lxml.etree
urlbase = 'http://reuters.com/finance/markets/index?symbol=us!spx&sortBy=&sortDir=&pn='
for i in range(1:18):
url = urlbase+str(i)
content = lxml.html.parse(url)
item = content.xpath('XPATH HERE')
ticker = [thing.text for thing in item]
以下是我一直在玩的xpath:
'//*[@id="topContent"]/div/div[2]/div[1]/table/tr[2]/td[1]/a'
'//*[@id="topContent"]/div/div[2]/div[1]/table/tbody/tr[2]/td[1]/a
'/html/body/div[3]/div[3]/div/div[2]/div/table/tbody/tr[3]/td/a'
'/html/body/div[3]/div[3]/div/div[2]/div/table/tr[3]/td/a'
我尝试通过以下方式访问该特定表:
'//table[@class="dataTable sortable"]'
,但没有运气
任何人都可以帮忙吗?我觉得这是一个知道他们正在做什么的人能够很快修复的事情 谢谢!
答案 0 :(得分:1)
您尝试抓取的页面在表格中有一个表单。正确的xpath应为'//table[@class="dataTable sortable"]/form/tr/td[1]/a'
此外,您的代码中可能有拼写错误,应该是range(1,18)
而不是range(1:18)
。这是我身边的最终代码:
scrape = []
companies =[]
import lxml
import lxml.html
import lxml.etree
urlbase = 'http://reuters.com/finance/markets/index?symbol=us!spx&sortBy=&sortDir=&pn='
for i in range(1,18):
url = urlbase+str(i)
content = lxml.html.parse(url)
item = content.xpath('//table[@class="dataTable sortable"]/form/tr/td[1]/a')
ticker = [thing.text for thing in item]
print ticker