我正在进行网页抓取,我正在尝试使用Scrapy抓取Queensland Lobbyist Registers和主寄存器中的链接。每个说客都有一个链接,可以通过该链接获取他们的客户列表(例如,Antinomies和Australian Public Affairs;但是,这些嵌套表在每个页面中并不一致。例如,对于Antimonies,客户端的xpath是//*[@id="main"]/table[7]*
,它从第20行开始,而对于APF,它是//*[@id="main"]/table[6]
,它从第24行开始。共同点是,两个客户机子表都在此行下:
“代表或可能代表进行游说活动的客户”
有没有一种方法可以让Scrapy只在每一页的特定行之后读取行?
我一直在使用以下内容:tableclients = response.xpath('//*[@id="main"]/table[7]//tbody') rowclients = tableclients.xpath('//tr')
2条答案
按热度按时间hof1towb1#
是的,可以使用基于文本标准的Scrapy来抓取HTML表,最有可能的是:
Client/s on whose behalf lobbying activity is, or may be, conducted
。使用contains()
方法选择h2
标签及其文本节点值,并找到表编号为7的前导同级表,从这里您必须获取所需的数据。工作代码示例:
输出:
...等等
hrysbysz2#
请尝试以下操作:
//h3[contains(text(), 'Your text')]/following-sibling::div[1]/text()