clean_html.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import re
  2. def clean_html(html_str):
  3. """HTML 替换"""
  4. patterns = {
  5. '<!--.*?-->': '',
  6. '"': "'",
  7. '\n': '',
  8. '\xa0': "",
  9. '<span .*?>': '',
  10. '<link .*?>': '',
  11. '</span> ': '',
  12. '</span>': '',
  13. '<span>': '',
  14. '<p.*?>': '<br>',
  15. '</p>': '<br>',
  16. '<div>': '<br>',
  17. '<div .*?>': '<br>',
  18. '</div>': '<br>',
  19. '<img .*?>': '<br>',
  20. '<style.*?</style>': '',
  21. '<EpointForm>': '',
  22. '<html.*?</head>': '',
  23. '<!DOCTYPE.*?>': '',
  24. '</meta>': '',
  25. '<?xml:.*?>': '',
  26. '<label.*?>': '<br>',
  27. '</label>': '',
  28. 'style=".*?"': '',
  29. "style='.*?'": '',
  30. 'class=".*?"': '',
  31. "class='.*?'": '',
  32. "align='.*?'": '',
  33. 'align=".*?"': '',
  34. 'border=".*?"': '',
  35. "border='.*?'": '',
  36. 'cellpadding=".*?"': '',
  37. "cellpadding='.*?'": '',
  38. 'cellspacing=".*?"': '',
  39. "cellspacing='.*?'": '',
  40. 'center=".*?"': '',
  41. "center='.*?'": '',
  42. 'width=".*?"': '',
  43. "width='.*?'": '',
  44. "bordercolor='.*?'": '',
  45. 'bgcolor=".*?"': '',
  46. 'BORDERCOLOR=".*?"': '',
  47. '<a name=".*?">': '',
  48. '<o:p>': '',
  49. '</o:p>': '',
  50. '<A name=.*?>': '',
  51. '<a .*?>': '',
  52. '</a>': '',
  53. '<font .*?>': '',
  54. '</font>': '',
  55. '<body.*?>': '',
  56. '</body>': '',
  57. '<script.*?>': '',
  58. '</script>': '',
  59. '【关闭】': '',
  60. '【打印】': '',
  61. '若附件无法下载,你可以尝试使用360极速浏览器进行下载!': '',
  62. }
  63. all_tag = re.findall("<[^>]+>", html_str)
  64. for tag in all_tag:
  65. html_str = html_str.replace(tag, str(tag).lower())
  66. repl_str = [
  67. '中国采购与招标网',
  68. '采购与招标网',
  69. 'www.chinabidding.com.cn',
  70. 'www.chinabidding.cn'
  71. ]
  72. for repl in repl_str:
  73. html_str = re.sub(repl, '___', html_str, re.S | re.M)
  74. def substitutes(k, v, c):
  75. return re.sub(k, v, c)
  76. for k, v in patterns.items():
  77. html_str = re.sub(k, v, substitutes(k, v, html_str), re.S, re.M)
  78. return html_str