Python 如何使用scrapy提取“展开更多”按钮中的文本?

Python 如何使用scrapy提取“展开更多”按钮中的文本?,python,web-scraping,scrapy,Python,Web Scraping,Scrapy,在URL中: 邮政52365 在获取文本之前,我需要单击“展开更多”,如何获取其中的文本?有没有一种方法可以在运行spider脚本时触发expand more来显示整个脚本 到目前为止我试过的是这个 info.xpath//div[@class='messageContent']。首先提取\u。替换'\n' 但我仍然无法获得全文您可能看到了结尾处的点击展开文本,但仍然获得了完整的引用。您需要的是避免提取单击展开文本 例如: >>>response.xpath'//li[contains@cla

在URL中:

邮政52365

在获取文本之前,我需要单击“展开更多”,如何获取其中的文本?有没有一种方法可以在运行spider脚本时触发expand more来显示整个脚本

到目前为止我试过的是这个

info.xpath//div[@class='messageContent']。首先提取\u。替换'\n'


但我仍然无法获得全文

您可能看到了结尾处的点击展开文本,但仍然获得了完整的引用。您需要的是避免提取单击展开文本

例如:

>>>response.xpath'//li[contains@class,message][.//a/text[.=52365]]//*[re:test@class,\\bquote\\b]//text.getall ['CCS for model 3 coming','\n当文章提到欧洲时,北美战区将很快获得CCS适配器,'\n','\n','\n','特斯拉为新款S型和X型推出190美元的CCS适配器,为旧款车辆提供改装','\n','\n','\nPS:Text from article','\n','\n','\n更新:Tes洛杉矶的一位发言人告诉我们,他们将确保北美的业主能够访问所有“引人注目的网络”,但他们现在没有什么要宣布的
正如有人在评论中指出的,你不需要点击任何东西。如果在浏览器中打开document inspector,您可以看到所有文本都在那里

您可以使用简单的css选择器和for循环检索所有消息:

for post in sel.css('.messageList>li'): 
    text = ''.join(post.css('blockquote.messageText ::text').extract()) 
    print(text) 
    print('------')

此文本对您来说是隐藏的,但所有文本都在此标记中,它没有被javascript更新,因此scrapy不需要单击“扩展更多”来获取所有文本。Post 52365是第5篇文章,因此您必须使用[4]来获取它-xpath://div[@class='messageContent'][4]。extract@furas不是这样。XPath索引是基于1的,我知道…@Gallaecio-也许XPath索引是基于1的,但我在XPath中不使用[4]。我从python的列表中得到[4],该列表从0开始计数。我也在scrapy shell中测试了它,它似乎给出了预期的文本。你是对的,对不起!