wxSpiderApi.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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) -> dict:
  34. """
  35. 获取文章
  36. :param is_count:
  37. :param content_link:
  38. :return:
  39. """
  40. url = "{}/detail".format(cls.base_url)
  41. payload = json.dumps({
  42. "content_link": content_link,
  43. "is_count": is_count,
  44. "is_ad": False
  45. })
  46. response = requests.request("POST", url, headers=cls.headers, data=payload, timeout=120)
  47. return response.json()
  48. @classmethod
  49. @retryOnNone()
  50. def update_msg_list(cls, ghId, index) -> dict:
  51. """
  52. :return:
  53. """
  54. url = '{}/blogger'.format(cls.base_url)
  55. payload = {
  56. 'account_id': ghId,
  57. 'cursor': index,
  58. }
  59. response = requests.post(url=url, headers=cls.headers, data=json.dumps(payload), timeout=120)
  60. return response.json()
  61. @classmethod
  62. @retryOnNone()
  63. def get_account_by_url(cls, content_url) -> dict:
  64. """
  65. 通过文章获取账号信息
  66. :param content_url:
  67. :return:
  68. """
  69. url = '{}/account_info'.format(cls.base_url)
  70. data = {"content_link": content_url}
  71. response = requests.request("POST", url=url, headers=cls.headers, json=data, timeout=120)
  72. return response.json()
  73. @classmethod
  74. def get_recommend_articles(cls, content_link) -> dict:
  75. """
  76. use content link to get recommend articles
  77. :param content_link:
  78. :return:
  79. """
  80. url = "{}/recommend".format(cls.base_url)
  81. payload = json.dumps(
  82. {"content_link": content_link}
  83. )
  84. response = requests.request("POST", url=url, headers=cls.headers, data=payload, timeout=120)
  85. return response.json()