wxSpiderApi.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. """
  2. @author: luojunhui
  3. """
  4. import json
  5. import requests
  6. from applications.decoratorApi import retryOnNone
  7. class WeixinSpider(object):
  8. """
  9. Update account articles
  10. """
  11. # ip = "8.217.190.241"
  12. # ip = "47.98.154.124"
  13. # port = "8888"
  14. base_url = "http://crawler-cn.aiddit.com/crawler/wei_xin"
  15. headers = {
  16. "Content-Type": "application/json"
  17. }
  18. @classmethod
  19. @retryOnNone()
  20. def search_articles(cls, title) -> dict:
  21. """
  22. search articles in wx
  23. :return:
  24. """
  25. url = "{}/keyword".format(cls.base_url)
  26. payload = json.dumps({
  27. "keyword": title,
  28. "cursor": "1"
  29. })
  30. response = requests.request("POST", url, headers=cls.headers, data=payload, timeout=120)
  31. return response.json()
  32. @classmethod
  33. def get_article_text(cls, content_link, is_count=False, is_cache=True) -> dict:
  34. """
  35. 获取文章
  36. :param is_cache:
  37. :param is_count:
  38. :param content_link:
  39. :return:
  40. """
  41. url = "{}/detail".format(cls.base_url)
  42. payload = json.dumps({
  43. "content_link": content_link,
  44. "is_count": is_count,
  45. "is_ad": False,
  46. "is_cache": is_cache
  47. })
  48. response = requests.request("POST", url, headers=cls.headers, data=payload, timeout=120)
  49. return response.json()
  50. @classmethod
  51. @retryOnNone()
  52. def update_msg_list(cls, ghId, index) -> dict:
  53. """
  54. :return:
  55. """
  56. url = '{}/blogger'.format(cls.base_url)
  57. payload = {
  58. 'account_id': ghId,
  59. 'cursor': index,
  60. }
  61. response = requests.post(url=url, headers=cls.headers, data=json.dumps(payload), timeout=120)
  62. return response.json()
  63. @classmethod
  64. @retryOnNone()
  65. def get_account_by_url(cls, content_url) -> dict:
  66. """
  67. 通过文章获取账号信息
  68. :param content_url:
  69. :return:
  70. """
  71. url = '{}/account_info'.format(cls.base_url)
  72. data = {"content_link": content_url}
  73. response = requests.request("POST", url=url, headers=cls.headers, json=data, timeout=120)
  74. return response.json()
  75. @classmethod
  76. def get_recommend_articles(cls, content_link) -> dict:
  77. """
  78. use content link to get recommend articles
  79. :param content_link:
  80. :return:
  81. """
  82. url = "{}/recommend".format(cls.base_url)
  83. payload = json.dumps(
  84. {"content_link": content_link}
  85. )
  86. response = requests.request("POST", url=url, headers=cls.headers, data=payload, timeout=120)
  87. return response.json()