当前位置:   article > 正文

爬取今日头条热点文章,揭秘热门话题背后的故事!_爬虫获取今日头条新闻数据

爬虫获取今日头条新闻数据

大家好,我是小码农。今天我要和大家分享一个有趣的项目,那就是使用Python爬取今日头条下面的热点文章。

引言

随着互联网的快速发展,人们对于时事新闻和热门话题的关注度越来越高。而今日头条作为国内知名的新闻平台,汇集了大量的热点文章,每天都有大量的新闻内容产生。因此,我们希望能够利用Python编写一个爬虫程序,自动化地获取今日头条下面的热点文章,以便我们更好地了解当下的热门话题和社会热点。

代码实现

首先,我们需要导入一些必要的库和模块:

  1. import bag
  2. import re
  3. from bs4 import BeautifulSoup
  4. from urllib.parse import quote
  5. import requests

然后,我们定义了一个函数get_hot_list(),用于获取今日头条的热点文章列表:

  1. def get_hot_list():
  2. url = r'https://api.vvhan.com/api/hotlist/toutiao'
  3. resp = session.get(url)
  4. resp.encoding = 'utf8'
  5. resp.close() # 养成好习惯,请求完记得关闭连接
  6. result = []
  7. for ls in resp.json().get('data'):
  8. result.append({ls.get('title'): ls.get('hot')})
  9. return result

接下来,我们定义了一个函数Get_relevant_articles(dic),用于获取与指定热点话题相关的文章:

  1. def Get_relevant_articles(dic):
  2. url = r'https://so.toutiao.com/search?dvpf=pc&source=input&keyword={}'.format(quote(list(dic)[0], encoding='utf8'))
  3. headers = {
  4. "Referer": url,
  5. "Host": "so.toutiao.com"
  6. }
  7. session.headers = headers
  8. session.cookies[''] = r'xxxxxxxxxxxxxxxxxxx'
  9. resp = session.get(url)
  10. resp.encoding = 'utf-8'
  11. resp.close()
  12. url_list = [[i[0].replace('\\u003c', '').replace('em', '').replace('\\u003e', '').replace('/', ''), i[1]] for i in re.findall(r'"title":"(.*?)".*?"share_url":"(.*?)"', resp.text) if i[0] != '']
  13. title = re.compile(r'<strong>(.*?)</strong>', re.S)
  14. result = []
  15. for ls in url_list:
  16. try:
  17. resp1 = requests.get(ls[-1])
  18. resp1.close()
  19. soup = BeautifulSoup(resp1.text, 'html.parser')
  20. html = soup.findAll('div', class_='a-con')
  21. mid = []
  22. for p in html:
  23. mid.extend(re.findall(r'<p>(.*?)</p>', str(p)))
  24. result.append([re.findall(title, resp1.text)[0], '\n'.join(mid)])
  25. except Exception as e:
  26. pass
  27. # bag.Bag.save_excel(result, './头条热点文章.xlsx') # 保存文章

最后,我们在main()函数中调用了以上两个函数,实现了获取热点文章的整个流程:

  1. def main():
  2. hos_list = get_hot_list()
  3. for dic in hos_list[:1]:
  4. Get_relevant_articles(dic)

完整代码

  1. #!/usr/bin/env python3
  2. # coding:utf-8
  3. import bag
  4. import re
  5. from bs4 import BeautifulSoup
  6. from urllib.parse import quote
  7. import requests
  8. def main():
  9. hos_list = get_hot_list()
  10. for dic in hos_list[:1]:
  11. Get_relevant_articles(dic)
  12. def Get_relevant_articles(dic):
  13. url = r'https://so.toutiao.com/search?dvpf=pc&source=input&keyword={}'.format(quote(list(dic)[0], encoding='utf8'))
  14. headers = {
  15. "Referer": url,
  16. "Host": "so.toutiao.com"
  17. }
  18. session.headers = headers
  19. session.cookies[''] = r'tt_webid=7349741726641210919; _ga=GA1.1.1593236486.1711245116; _tea_utm_cache_4916=undefined; _S_DPR=1.25; _S_IPAD=0; s_v_web_id=verify_lu4vah8p_O0eJgr0E_sLhQ_4Uvc_9sss_Y5GxuDq6d5ze; msToken=1-tj_F8UanP9ipxwb8AGOtlYFUBckmgeCpbsyLmWl1TLeHmtakVdRA_tar8htpfsa_3-l66NSL7j_b72_X6im2OY9auiliODwSFBFGZg; ttwid=1%7CrTMoH6_equv6Fj5KhisifcjXO0dY3yXbq3dROS5p7oQ%7C1711245342%7Ccebddba5ac70fb0ee50b6642caaa41e0e0466459e2cbbd2ea69f67ff0b2ca83d; _ga_QEHZPBE5HH=GS1.1.1711245116.1.1.1711246976.0.0.0; _S_WIN_WH=650_608; __ac_nonce=065ff9f2a00b65ed4b389; __ac_signature=_02B4Z6wo00f01JSasJgAAIDDqTOqBst0l9CUurQAAEDdb3; __ac_referer=__ac_blank'
  20. resp = session.get(url)
  21. resp.encoding = 'utf-8'
  22. resp.close()
  23. url_list = [[i[0].replace('\\u003c', '').replace('em', '').replace('\\u003e', '').replace('/', ''), i[1]] for i in re.findall(r'"title":"(.*?)".*?"share_url":"(.*?)"', resp.text) if i[0] != '']
  24. title = re.compile(r'<strong>(.*?)</strong>', re.S)
  25. result = []
  26. for ls in url_list:
  27. try:
  28. resp1 = requests.get(ls[-1])
  29. resp1.close()
  30. soup = BeautifulSoup(resp1.text, 'html.parser')
  31. html = soup.findAll('div', class_='a-con')
  32. mid = []
  33. for p in html:
  34. mid.extend(re.findall(r'<p>(.*?)</p>', str(p)))
  35. result.append([re.findall(title, resp1.text)[0], '\n'.join(mid)])
  36. except Exception as e:
  37. pass
  38. # bag.Bag.save_excel(result, './头条热点文章.xlsx') # 保存文章
  39. def get_hot_list():
  40. url = r'https://api.vvhan.com/api/hotlist/toutiao'
  41. resp = session.get(url)
  42. resp.encoding = 'utf8'
  43. resp.close() # 养成好习惯,请求完记得关闭连接
  44. result = []
  45. for ls in resp.json().get('data'):
  46. result.append({ls.get('title'): ls.get('hot')})
  47. return result
  48. if __name__ == '__main__':
  49. session = bag.session.create_session()
  50. session.get('https://www.toutiao.com/')
  51. main()

结果展示与分析

经过我们的代码实现,我们成功地获取到了今日头条下面的热点文章。通过解析文章的内容,我们可以深入了解热门话题背后的故事。当然,你也可以根据实际需求对获取到的文章进行保存或进一步处理。

总结

通过这个项目,我们学习了如何使用Python爬取今日头条下面的热点文章,并揭秘了热门话题背后的故事。爬虫技术在当今信息时代具有重要的应用价值,希望这个项目能够帮助你更好地理解爬虫技术的实际应用。

感谢大家的阅读!如果你有任何问题或建议,欢迎在评论区留言。谢谢!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/958734
推荐阅读
相关标签
  

闽ICP备14008679号