gpt4 book ai didi

python 抓取路透社网站...糟糕的 xpath?

转载 作者:太空宇宙 更新时间:2023-11-03 19:17:30 25 4
gpt4 key购买 nike

我正在尝试做一些看似简单的事情...我正在尝试从此链接中抓取路透社列表的公司名称:

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"]',但没有任何运气

有人可以帮忙吗?我觉得知道自己在做什么的人能够很快解决这个问题谢谢!

最佳答案

您尝试抓取的页面在表格内有一个表单。正确的 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

关于python 抓取路透社网站...糟糕的 xpath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10907469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com