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

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(),可以读取html
    soup = 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    #如果报错就不管,继续读取下一个url
    continue

在这里插入图片描述
在这里插入图片描述

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))

在这里插入图片描述

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: 可以使用Python中的BeautifulSoup库来爬取页数据,并使用pandas库将数据存储到Excel文件中。 首先,需要安装BeautifulSoup和pandas库: ``` pip install beautifulsoup4 pip install pandas ``` 然后,可以使用以下代码来爬取页数据并将其存储到Excel文件中: ```python import requests from bs4 import BeautifulSoup import pandas as pd # 发送请求获取页内容 url = 'https://www.example.com' response = requests.get(url) html = response.content # 使用BeautifulSoup解析页内容 soup = BeautifulSoup(html, 'html.parser') # 获取需要的数据 data = [] table = soup.find('table') rows = table.find_all('tr') for row in rows: cols = row.find_all('td') cols = [col.text.strip() for col in cols] data.append(cols) # 将数据存储到Excel文件中 df = pd.DataFrame(data) df.to_excel('data.xlsx', index=False, header=False) ``` 这段代码会将页中的表格数据爬取下来,并存储到名为"data.xlsx"的Excel文件中。可以根据实际情况修改代码中的址和数据解析方式。 ### 回答2: 使用BeautifulSoup进行爬取,并将数据保存为Excel文件是一种常见且方便的方法。下面是一个示例代码: 首先,我们需要导入所需的库: ```python from bs4 import BeautifulSoup import requests import pandas as pd ``` 然后,我们可以使用Requests库获取要爬取页内容: ```python url = '要爬取页地址' response = requests.get(url) ``` 接下来,我们可以使用BeautifulSoup库来解析页内容并提取所需的数据: ```python soup = BeautifulSoup(response.text, 'html.parser') # 根据页结构和需要的数据,使用BeautifulSoup提取相应的数据 data = [] # 示例:获取页中所有的标题 titles = soup.find_all('h1') for title in titles: data.append(title.text) ``` 最后,我们可以使用Pandas库将数据保存为Excel文件: ```python df = pd.DataFrame(data, columns=['标题名称']) # 保存为Excel文件 df.to_excel('文件名.xlsx', index=False) ``` 以上就是使用BeautifulSoup爬取页并生成Excel文件的基本步骤。根据具体的页结构和需要提取的数据,可以进行相应的调整和扩展。 ### 回答3: BeautifulSoup是一个Python库,用于从HTML或XML文档中提取数据。通过使用BeautifulSoup爬取数据后,我们可以使用其他库,如Pandas和Openpyxl,将数据存储到Excel文件中。 首先,我们需要安装BeautifulSoup库。在命令提示符或终端中输入以下命令: pip install beautifulsoup4 接下来,我们需要导入相应的库。在Python脚本的开头添加以下行: from bs4 import BeautifulSoup import pandas as pd from openpyxl import Workbook 然后,我们需要使用BeautifulSoup来解析HTML或XML文档。我们可以使用requests库进行页请求,并将其传递给BeautifulSoup来解析数据。下面是一个示例: import requests url = "页的URL" response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") 接下来,我们需要提取想要存储到Excel的数据。我们可以使用BeautifulSoup的查找和选择器功能来定位特定的HTML标签或CSS选择器。以下是一个示例: data = [] table = soup.find("table") # 假设要提取HTML文档中的表格数据 rows = table.find_all("tr") # 查找所有行 for row in rows: cells = row.find_all("td") # 查找行中的所有单元格 row_data = [] for cell in cells: row_data.append(cell.text) # 提取单元格的文本数据 data.append(row_data) # 将每一行的数据添加到data列表中 接下来,我们可以使用Pandas库将数据转换为DataFrame对象,并使用openpyxl库将DataFrame写入Excel文件。以下是一个示例: df = pd.DataFrame(data) df.columns = ["列名1", "列名2", ...] # 设置DataFrame的列名 # 创建一个Workbook对象 wb = Workbook() sheet = wb.active # 将DataFrame的数据写入工作表中 for r in dataframe_to_rows(df, index=False, header=True): sheet.append(r) # 保存Excel文件 wb.save("文件名.xlsx") 这样,我们就用BeautifulSoup爬取数据并将其存储到Excel文件中了。不过,请注意在实际应用中可能需要根据具体情况进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值