trending_searches.py 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import datetime
  2. from YoConfig import YoConfig
  3. from datetime import tzinfo
  4. from pytrends.request import TrendReq
  5. import mysql.connector
  6. from mysql.connector import Error
  7. from opencc import OpenCC
  8. cc = OpenCC('s2t')
  9. DateFROM = '2020-01-01'
  10. DateTO = str(datetime.date.today())
  11. connection = mysql.connector.connect(
  12. host=YoConfig['db']['choozmo_new']['MYSQL_HOST'],
  13. database=YoConfig['db']['choozmo_new']['MYSQL_DB'],
  14. user=YoConfig['db']['choozmo_new']['MYSQL_USER'],
  15. password=YoConfig['db']['choozmo_new']['MYSQL_PASSWORD']
  16. )
  17. kw_list = []
  18. pytrends = TrendReq(hl='zh-TW', tz=1200, geo='TW')
  19. """ pytrends.build_payload(kw_list, cat=0, timeframe=DateFROM +
  20. ' '+DateTO, geo='TW', gprop='') """
  21. i = 1
  22. keyWords = pytrends.trending_searches(pn='taiwan')[0]
  23. if connection.is_connected():
  24. cursor = connection.cursor()
  25. for word in keyWords:
  26. sql = "insert into trending_searches(ts_word, ts_rank) values('" + \
  27. word + "','" + str(i) + "')"
  28. i += 1
  29. cursor.execute(sql)
  30. kw_list = []
  31. kw_list.append(word)
  32. pytrends.build_payload(kw_list, cat=0, timeframe=DateFROM +
  33. ' '+DateTO, geo='TW', gprop='')
  34. KWORD = kw_list[0]
  35. print(KWORD)
  36. rtdata = pytrends.related_topics()
  37. rqdata = pytrends.related_queries()
  38. iotdata = pytrends.interest_over_time()
  39. try:
  40. if not rtdata[KWORD]["rising"] is None:
  41. for item in rtdata[KWORD]["rising"].values.tolist():
  42. sql = "insert into related_topics(rt_kword,rt_type,rt_value,rt_formattedValue,rt_link,rt_topic_mid,rt_topic_title,rt_topic_type) select '" + KWORD + "','rising','" + str(
  43. item[0]) + "','" + item[1] + "','" + item[2] + "','" + item[3] + "','" + item[4].replace("'", "''") + "','" + item[5] + "' "
  44. sql = cc.convert(sql)
  45. cursor.execute(sql)
  46. if not rtdata[KWORD]["top"] is None:
  47. for item in rtdata[KWORD]["top"].values.tolist():
  48. sql = "insert into related_topics(rt_kword,rt_type,rt_value,rt_hasData,rt_link,rt_topic_mid,rt_topic_title,rt_topic_type) select '" + KWORD + \
  49. "','top','" + item[1] + "','" + str(item[2]) + "','" + item[3] + "','" + \
  50. item[4] + "','" + item[5].replace("'", "''") + "','" + \
  51. item[6] + "' "
  52. sql = cc.convert(sql)
  53. cursor.execute(sql)
  54. if not rqdata[KWORD]["rising"] is None:
  55. for item in rqdata[KWORD]["rising"].values.tolist():
  56. sql = "insert into related_queries(rq_kword,rq_relatedword,rq_count,rq_type) select '" + \
  57. KWORD+"','" + item[0].replace("'", "''") + "','" + \
  58. str(item[1]) + "','rising' "
  59. sql = cc.convert(sql)
  60. cursor.execute(sql)
  61. if not rqdata[KWORD]["top"] is None:
  62. for item in rqdata[KWORD]["top"].values.tolist():
  63. sql = "insert into related_queries(rq_kword,rq_relatedword,rq_count,rq_type) select '" + \
  64. KWORD+"','" + item[0].replace("'", "''") + "','" + \
  65. str(item[1]) + "','top' "
  66. sql = cc.convert(sql)
  67. cursor.execute(sql)
  68. i = 0
  69. for item in iotdata.index:
  70. if iotdata["isPartial"][i]:
  71. sql = "insert into interest_over_time(iot_kword,iot_date,iot_value) select '" + KWORD+"','" + str(
  72. item) + "','" + str(iotdata[KWORD][i]) + "' "
  73. cursor.execute(sql)
  74. i += 1
  75. except:
  76. print(sql)
  77. connection.commit()
  78. if (connection.is_connected()):
  79. cursor.close()
  80. connection.close()