我目前正在使用scrapy设置一堆蜘蛛.这些蜘蛛应该只从目标网站中提取文本(文章,论坛帖子,段落等).
问题是:有时,我的目标节点包含< script>标签,因此刮下的文本包含javascript代码.
Here is a link到我正在使用的一个真实的例子.在这种情况下,我的目标节点是// td [@ ID =’contenuStory’].问题是有一个< script>标记在第一个子div中.
我花了很多时间在网上和SO上搜索解决方案,但我找不到任何东西.我希望我没有错过任何明显的东西!
例
HTML响应(仅限目标节点):
我想要的东西:
Some textSome other text
我得到了什么:
Some textvar s = 'JavaScript I don't want';Some other text
我的代码
给定一个xpath选择器我正在使用以下函数来提取文本:
def getText(hxs): if len(hxs) > 0: l = hxs.select('string(.)') if len(l) > 0: s = l[0].extract().encode('utf-8') else: s = hxs[0].extract().encode('utf-8') return s else: return 0
我尝试过使用XPath轴(像child :: script这样的东西),但无济于事.最佳答案尝试使用w3lib.HTML中的utils函数:
from w3lib.HTML import remove_Tags,remove_Tags_with_contentinput = hxs.select('//div[@ID="content"]').extract()output = remove_Tags(remove_Tags_with_content(input,('script',)))
总结 以上是内存溢出为你收集整理的python – 使用scrapy刮掉没有javascript代码的文本全部内容,希望文章能够帮你解决python – 使用scrapy刮掉没有javascript代码的文本所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)