• 从维基百科通过关键字爬取指定文本内容


    通过输入搜索的关键字,和搜索页数范围,爬出指定文本内内容并存入到txt文档。代码逐行讲解。

    使用re、res、BeautifulSoup包读取,代码已测,可以运行。txt文档内容不乱码。

    1. import re
    2. import requests
    3. from bs4 import BeautifulSoup
    4. titles = [] #存放文档标题
    5. urls = [] #存放每个文档链接
    6. keyword = input("请输入想要查找的关键字:")
    7. pagenum = input("请输入想要查找的页数:")
    8. txt_name = keyword + ":前" + pagenum + "页内容.txt"
    9. with open(txt_name,'w',encoding='utf-8') as f: # 创建txt文件
    10. f.write(txt_name + '\r') # 将文件名写入
    11. f.close()
    12. # 每页内容单独爬取
    13. for i in range(1, int(pagenum)+1):
    14. html = "http://www.ofweek.com/newquery.action?keywords="+keyword+"&type=1&pagenum=" + str(i) # 根据关键词和页数生成链接
    15. resp = requests.get(html) # get获取数据,访问拼接后的url
    16. resp.encoding = 'gb18030' # 读取中文时不会出现乱码
    17. content = resp.text # 拿到网站的数据,捕获到的网页内容给content变量
    18. # html文件解析,解析响应的文件内容,html.text 是 HTML 文档的源代码,
    19. # 'html.parser' 是解析器,用于指定如何解析 HTML 文档
    20. bs = BeautifulSoup(content,'html.parser')
    21. #每个标题都存在类名为no-pic的li标签里面
    22. for news in bs.select('div.zx-tl'):
    23. url = news.select('a')[0]['href'] # 提取文章链接
    24. urls.append(url)
    25. title = news.select('a')[0].text # 提取文章标题
    26. titles.append(title)
    27. for i in range(len(urls)): # 遍历每篇文章的链接
    28. resp = requests.get(urls[i])
    29. resp.encoding='gb18030'
    30. content = resp.text
    31. bs = BeautifulSoup(content,'html.parser')
    32. #文章的内容是存在类名为artical-content的div块里面
    33. page_content = bs.select('div.artical-content')[0].text
    34. with open(txt_name,'a',encoding='utf-8') as f: # 写入txt文件
    35. f.write("\n"+titles[i]+page_content)
    36. f.close()
    37. print("文件保存成功!")

  • 相关阅读:
    【数据结构与算法-初阶】栈和队列
    shopee平台现在好做吗
    Kotlin高仿微信-第27篇-朋友圈-相册选择图片或小视频
    十九种卷积
    Tableau表格取消合并单元格
    基于B/S开发教师档案管理系统
    centos搭建activemq5.16
    【Electron 拦截请求实现自定义网络处理】
    嵌入式系统在物联网中的应用和发展
    Transformers.js v2.6 现已发布
  • 原文地址:https://blog.csdn.net/laner__gg/article/details/132813220