python - 如何删除 requests_html 中的 adsense 代码?
问题描述
我正在使用requests_html
图书馆来抓取一个网站,但我同时从那个抓取的文本中获得了来自该网站的adsense 。该示例如下所示:
一些文本一些文本一些文本一些文本然后这个: (adsbygoogle = window.adsbygoogle || []).push({});
一些文本 一些文本 一些文本 换行后的一些文本 然后是: sas.cmd.push(function() { sas.call("std", { siteId: 301357, // pageId: 1101926, // Page : Seneweb_AF/rg formatId: 49048, // 格式 : Pave 2 300x250 target: '' // Ciblage }); });
现在我怎样才能摆脱上面的斜体粗体文字?
解决方案
假设您能够在需要删除不需要的部分之前将文本作为字符串保存,您可以搜索和替换。
如果(adsbygoogle = window.adsbygoogle || []).push({});
始终是完全相同的字符串(每次都包括相同的空格),那么您可以使用str.replace()
. 请参阅如何在 python 3.x 中使用 string.replace()。
如果文本每次都不完全相同——我猜至少你展示的第二个例子每次都不一样——那么你可以使用正则表达式。请参阅模块的 python 文档re
。如果您只在程序中使用几个正则表达式,您可以调用re.sub
,如下所示:
sanitized_text = re.sub(regularexpression, '', original_text, flags=re.MULTILINE|re.DOTALL)
可能需要一些试验和错误才能pattern
匹配每个案例,就像第二个例子一样。
如果检索到的文章中有换行符,您将需要re.MULTILINE
,因为几乎肯定会有,并且re.DOTALL
为了使某些正则表达式模式跨行边界工作,这似乎是第二个示例所需要的。
如果您最终不得不使用几个正则表达式,您可以re.compile
在开始抓取之前使用它们进行编译:
pattern = re.compile(regularexpression, flags=re.MULTILINE|re.DOTALL)
稍后,当您有要从中删除部分的文本时,您可以像这样进行搜索和替换:
sanitized_text = pattern.sub('', original_text)
推荐阅读
- android - 使用 JSON 使用 Networking GET 方法登录应用程序
- android - 当您开始使用 fultter -Darat 在您的第一个应用程序中初始化 gradle 文件时,是否有针对“Gradle”问题的真正解决方案
- django - 在导航项上呈现模板单击块内容而不加载整个页面(Django)
- reactjs - 在 Gatsby 中反应 Redux 钩子 useDispatch “无效的钩子调用”
- javascript - 如何在另一个 div 中获取一个 div id
- python - 在python中引发响应未准备好
- asp.net - 如何重定向到 asp.net 核心中的 url 并返回到相同的操作以查看?
- python - 如何使用 matplotlib 绘制从 ADC 获取的数据?没有绘制任何内容
- python - 无法连接小米手环 3
- php - 如何避免 laravel 中的缓存猛击?