BeautifulSoup爬取国家政策网目标话题的10篇文章,以及基于jieba的关键字生成

引用链接1
引用链接2

一:基本步骤

1.首先,写出需要访问的url,涉及到将中文转化为utf8编码,再转化为请求格式(后面有写如何转换)
2.urllib.request.urlopen(url)向浏览器发出请求,并返回一个html页面
3.此时我们用BeautifulSoup库以及页面解析器对返回的html页面进行解析,并找出存储文章链接的格子节点(标签名为div),返回BeautifulSoup对象
4.再通过对新对象解析,并且找出10条标签名为a的节点,将这些节点的herf属性值保存在列表中。
5.最后,通过对列表中的10条url进行访问,将页面内容分别保存至本地文件中。

二:具体实现

1.爬取有关“工资”的10篇文章

1-1:首先,网页请求query一般会将中文转化为类似于utf-8的编码格式,所以代码中我们需要将“工资”转化为目标格式

Python encode() 方法以 encoding 指定的编码格式编码字符串,默认为utf-8,返回的是字节码的形式
str.encode(encoding=‘UTF-8’)

请求中需要把\x替换为%,所以要先转化为string类型,再调用replace方法(注意:因为\x是转义字符,不想让转义字符生效,需要显示字符串原来的意思,这就要用r和R来定义原始字符串。),然后将小写字母转化为大写字母,并最终索引我们需要的部分

用input()取代目标字符串就能爬取任意想要爬取的主题了

# -*- encoding:utf-8 -*-
import urllib.request          # 导入urllib库的request模块
from bs4 import BeautifulSoup
import lxml                    #文档解析器
import os                      #os模块就是对操作系统进行操作
import numpy as np       #列表、字典、字符串等中计算元素重复的次数urls=[]
titles=[]
#爬取所有新闻的url和标题,存储在urls和titles中,这里range(1)表示只爬取1页。
for i in range(1):url='http://sousuo.gov.cn/s.htm?t=zhengce&q='+str(input().encode()).replace(r'\x', '%').upper()[2:-1]res = urllib.request.urlopen(url)  #调用urlopen()从服务器获取网页响应(respone),其返回的响应是一个实例html = res.read().decode('utf-8')  #调用返回响应示例中的read(),可以读取htmlsoup = BeautifulSoup(html, 'lxml')result = soup.find_all('div',attrs={'class': 'dys_middle_result_content'})download_soup = BeautifulSoup(str(result), 'lxml')print(download_soup)url_all = download_soup.find_all('a')for a_url in url_all:a_title=a_url.get_text('target')titles.append(a_title)a_url = a_url.get('href')urls.append(a_url)
#定义txt存储路径。
picpath='./newws1/'#这里我用的是本程序路径,也可改为c盘或d盘等路径。
def txt(name, text):  # 定义函数名if not os.path.exists(picpath):  # 路径不存在时创建一个os.makedirs(picpath)savepath = picpath + name + '.txt'file = open(savepath, 'a', encoding='utf-8')#因为一个网页里有多个标签p,所以用'a'添加模式file.write(text)# print(text)file.close
#读取urls中存储的ulrs[i],爬取文本。
for i in range(len(urls)):try: res = urllib.request.urlopen(urls[i])  html = res.read().decode('utf-8') soup = BeautifulSoup(html, 'lxml')print(str(i)+'saved')for p in soup.select('p'):t = p.get_text()txt(titles[i],t)except OSError:pass    #如果报错就不管,继续读取下一个urlcontinue


2.对爬取到的文章内容进行关键词分析——jieba

基于TF-IDF算法的关键词抽取
import jieba.analyse
jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())
–sentence 为待提取的文本
–topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
–withWeight 为是否一并返回关键词权重值,默认值为 False
–allowPOS 仅包括指定词性的词,默认值为空,即不筛选

from jieba.analyse import *
rootdir = './newws1'
list = os.listdir(rootdir) #列出文件夹下所有的目录与文件
print(list)
s=""
for i in range(0,len(list)):path = os.path.join(rootdir,list[i])if os.path.isfile(path):with open(path,encoding='utf-8') as f:data = f.read()s+=data
for keyword, weight in extract_tags(s, topK=10, withWeight=True):print('%s %s' % (keyword, weight))

BeautifulSoup爬取国家政策网目标话题的10篇文章,以及基于jieba的关键字生成相关推荐

  1. BeautifulSoup爬取贝壳网成都二手房源信息(附:完整源代码)

    BeautifulSoup爬取贝壳网成都二手房源信息 最近想出一套二手房,刚好在学习爬虫,那就顺手爬一下贝壳上成都各区二手房信息了解一下行情,本篇先介绍数据爬取,数据分析稍后有时间再写.仅用于技术交流 ...

  2. python爬取饿了么订单_python爬虫:爬取某图外卖数据有这篇文章就够了

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:Python进阶者 ( 想要学习Python?Pyth ...

  3. python爬虫:爬取某图外卖数据有这篇文章就够了

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:Python进阶者 ( 想要学习Python?Pyth ...

  4. 使用beautifulsoup爬取丁香网评论

    beautiful soup介绍 Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能.它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单, ...

  5. 使用Python+xpath爬取知网所有中英文期刊的封面背景图片

    使用Python+xpath+beautifulsoup爬取知网所有中英文期刊的封面背景图片` import json import requests from bs4 import Beautifu ...

  6. [python爬虫] BeautifulSoup和Selenium简单爬取知网信息测试

    作者最近在研究复杂网络和知识图谱内容,准备爬取知网论文相关信息进行分析,包括标题.摘要.出版社.年份.下载数和被引用数.作者信息等.但是在爬取知网论文时,遇到问题如下:   1.爬取内容总为空,其原因 ...

  7. 在当当买了python怎么下载源代码-爬虫实战:爬取当当网所有 Python 书籍

    来源:公众号-极客猴 出处: 本文主要讲解如何利用urllib.re.BeautifulSoup 这几个库去实战,爬取当当网所有 Python 书籍. 1 确定爬取目标 任何网站皆可爬取,就看你要不要 ...

  8. Python2 Python3 爬取赶集网租房信息,带源码分析

    *之前偶然看了某个腾讯公开课的视频,写的爬取赶集网的租房信息,这几天突然想起来,于是自己分析了一下赶集网的信息,然后自己写了一遍,写完又用用Python3重写了一遍.之中也遇见了少许的坑.记一下.算是 ...

  9. Python爬虫爬取东方财富网的股票信息

    简单的Python爬虫应用 目标:爬取东方财富网的股票信息 1.先找到要爬取的网页 2.第二步开始爬取信息 2.1 通过requests获取网页信息 2.2再通过BeautifulSoup解析: 2. ...

最新文章

  1. 前端img里面的src能是bmp么_实习|字节跳动前端实习生(非科班已定offer)三技术面+一HR面...
  2. 基于多阈值注意U-Net(MTAU)的MRI多模态脑肿瘤分割模型
  3. linux chown 命令 更改设置文件对应的用户和组
  4. ASP.NET MVC 3 Internationalization
  5. bigdecimal判断大于零_Python零基础入门(七):运算符
  6. java重新执行_(转载)java线程 - 线程唤醒后并被执行时,是在上次阻塞的代码行重新往下执行,而不是从头开始执行...
  7. ruby array_Ruby中带有示例的Array.fill()方法(3)
  8. java封装 1210 速记
  9. 逍遥android模拟器设置,逍遥安卓模拟器最佳设置电脑上玩手游流畅不卡多开更好用...
  10. 软件的接口设计图_基于GJB 5000A的软件配置管理研究与系统实现
  11. 俄罗斯 IT 存储空间告急,未来 2 月或将耗尽?
  12. php找不同的数组元素,PHP实现查询两个数组中不同元素的方法
  13. JavaScript基础简单入门
  14. 典型相关分析(CCA)及其python实现
  15. 交叉编译mpg123
  16. 星星之火-56:前传接口 CPRI容器的字长、能力与CPRI速率的对应关系
  17. Axure产品设计软件视频教程大全
  18. 163邮箱登录页面在哪儿?如何在手机、电脑上登陆163邮箱?
  19. 开题报告:基于java多用户商城平台系统 毕业设计论文开题报告模板
  20. Modern love 年度最暖心美剧

热门文章

  1. 假设检验是单侧还是双侧
  2. NBA球星信息查询 需求描述 以下是一段包括球员信息的文本,要求编写一个程序,让用户能按照自己喜欢的球队查询其所有球员信 息,并格式化打印出来。 “Carmelo Anthony,Portland
  3. 分布式链路追踪SkyWalking进阶实战之RPC上报和WebHook通知(三)
  4. C# 网页弹出对话框的几种方式
  5. 大数据下的竞彩足球胜平负分析技巧2
  6. 过去半年中死亡的知名人士
  7. 微机原理与接口技术--微型计算机的基本结构
  8. 用 ATL ActiveX 绘制任意平面函数的曲线
  9. 托爾斯泰《安娜‧卡列妮娜》的寫作背景
  10. do with与deal with用法