python爬取百度新闻数据,python爬取新闻网站内容

大家好,本文将围绕python爬取百度新闻数据展开说明,python爬取新闻网站内容是一个很多人都想弄明白的事情,想搞清楚python爬取文章内容需要先了解以下几个事情。

Python爬取新闻信息,分词统计并画词云

中国新闻网,是知名的中文新闻门户网站,也是全球互联网中文新闻资讯最重要的原创内容供应商之一。依托中新社遍布全球的采编网络,每天24小时面向广大网民和网络媒体,快速、准确地提供文字、图片、视频等多样化的资讯服务仿写文章软件


分析页面内容:首先,打开中国新闻网的页面可以看到,导航栏里已经有很多的分类标签选项。但是,可以跳转的标签并不全是按照新闻的内容进行分类的。
首页导航栏
例如,标签中的“金融”、“汽车”和“体育”是按照内容划分,但是“国际”、“港澳”和“台湾”是按照新闻的来源地划分的。这样的划分内容并不统一。

为了将新闻按照内容分类,需要将实时发布的新闻内容提取出来,按照文本语义信息进行统一的划分。

滚动新闻页面
这里,发现在中国新闻网的滚动新闻栏目中,可以看到实时发布的最新新闻汇总。并且可以在网页中获取到实时发布的新闻分类标签新闻标题。点击链接之后,可以跳转到相应的详情页面,从而获取到更详细的内容文本。
例如:

新闻详情页面示例

分析网页源码:在滚动新闻页面源码中可以看到headers的内容。将它作为请求的请求头添加进爬虫中,可以模拟浏览器访问网站。
滚动新闻页面的headers
在终端打印出获取到的网页源码。可以看到,新闻的题目和标签可以从源码中得到。

终端输出
但是这一步得到的resp还是一个字符串,为了方便对网页内容进行解析,需要将字符串转换为网页结构化数据,方便地查找HTML标签以及其中的属性和内容。

观察到网页的HTML结构,并将上一步得到的HTML格式字符串转换为一个BeautifulSoup对象。这样就可以通过标签找到对应的内容。
源码分析

信息筛选和存储:接下来要将网页中我们需要的内容筛选出来。
注意到信息在网页中是按照类名标题时间,三个板块去展示的,存取的内容也分为这三部分。
新闻内容分析
使用 正则表达式 对获取到的字符串进行匹配。我们可以得到一个
将得到的信息放入到文本中。

滚动页面可以翻页,爬取一共10页的信息将会得到1250条新闻信息。将这些新闻信息放在字典里,存入excel表格。
存储新闻信息
注意到不同的新闻类别会有不同的数量,我们将爬取到的不同内容的新闻的标签统计如下:
不同标签的数量
可以看到,其中“国内”、“财经”和“社会”为主体的新闻发表的次数最多。还有很多内容发表的次数非常少,如“IT”、“军事”。

同时,将所有新闻标题的内容进行整合。用jieba库进行分词,用wordcloud库绘制出词云展示图:
词云图

可以看到,“中国”一词在新闻标题中出现的次数最多,其次还有“国际”、“发展”等等。

import requests
from bs4 import BeautifulSoup
import re

import xlwt

import jieba
import wordcloud

def req():
    url_head = "http://www.chinanews.com/scroll-news/"
    
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
    }

    all_news = []
    news_list = [[] for i in range(20)]
    id2tp = { }
    id = {}
    cnt = 0
    txt = " "
    for i in range(10):
        url = url_head + "news" + str(i+1) + ".html"
        resp = requests.get(url=url, headers=headers) 
        resp = resp.content.decode('utf-8', 'ignore') # 不加第二个参数ignore会报错 忽略掉一些utf编码范围外的不知名字符
        #print(resp)
        
        soup = BeautifulSoup(resp, 'html.parser')
        
        news = soup.select('body #content #content_right .content_list ul li')
        #print(news)
        for new in news:
            new = new.text
            if new == '': 
                continue

            ti = re.compile("[0-9][0-9]:[0-9][0-9]")
            date = re.compile("[0-9]{1,2}\-[0-9]{1,2}")
            #print(new)
            time = new[-10:]
            new = ti.sub('', new)
            new = date.sub('', new)
            lm = new[1:3]
            
            if len(lm.strip()) == 1:
                lm = "IT"
            bt = new.split(']')[1].replace(' ', '')
            txt = txt + " " + bt
            if lm not in id.keys():
                id[lm] = cnt
                id2tp[cnt] = lm
                cnt += 1
            all_news.append({
                "lm": lm,
                "bt": bt,
                "time": time
            })
    print(len(all_news))
    print(id)
    #print(id2tp)
    workbook = xlwt.Workbook() #注意Workbook的开头W要大写
    
    sheet1 = workbook.add_sheet('sheet1',cell_overwrite_ok=True)

    sheet1.write(0, 0, "lm")
    sheet1.write(0, 2, "bt")
    sheet1.write(0, 4, "time")
    for idx, dictionary in enumerate(all_news):
        news_list[id[dictionary["lm"]]].append(dictionary["bt"])
        sheet1.write(idx + 1, 0, dictionary["lm"])
        sheet1.write(idx + 1, 2, dictionary["bt"])
        sheet1.write(idx + 1, 4, dictionary["time"])
    workbook.save('news.xls')

    for i in range(13):
        print(id2tp[i], len(news_list[i]))

    w=wordcloud.WordCloud(width=1000, font_path='chinese.ttf', height=700, background_color='white')
    lis = jieba.lcut(txt)
    # 人为设置一些停用词
    string = " ".join(lis).replace('的', '').replace('在', '').replace('为', '').replace('是', '').replace('有', '').replace('和', '')
    print(string)
    w.generate(string)
    w.to_file("news.png")

if __name__ == "__main__":
    
    req()
    # test()
    
  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python爬虫是一种程序,可以帮助我们从网页中提取数据,并将其保存为所需的格式。在本例中,我们可以使用Python爬取百度迁徙的数据。 步骤如下: 1. 首先,我们需要导入必要的库。使用`import requests`导入`requests`库,这个库可以帮助我们发送HTTP请求并获取网页内容。 2. 然后,我们使用`requests.get()`函数发送一个GET请求,来获取百度迁徙网页的内容。我们将返回的结果保存在一个变量中,比如`response`。 3. 接下来,我们可以使用`response.text`来获取网页的HTML内容。 4. 然后,我们可以使用Python内置的HTML解析库,例如`BeautifulSoup`,来解析HTML内容,并提取我们想要的数据。可以使用`pip install beautifulsoup4`来进行安装。例如,我们可以使用`BeautifulSoup`来找到网页中相应的元素,并提取其文本内容。 5. 最后,我们可以将提取到的数据保存到所需的格式中。例如,我们可以将数据保存为CSV文件,使用`csv`库来进行操作,并将提取到的数据逐行写入CSV文件中。 总结一下,这是爬取百度迁徙数据的一般步骤。但是请注意,爬取网页内容时需要遵守相关的法律法规和网站的使用规定。另外,为了避免给网站造成过大的负担,我们应该合理设置爬取的频率,并遵守网站的robots.txt协议。 ### 回答2: 要使用Python爬取百度迁徙数据,首先需要安装Python的相关库,如requests和beautifulsoup4等。接下来的步骤如下: 1. 导入所需库:在Python代码的开头,导入需要使用的库,如requests和beautifulsoup4。 2. 准备URL:确定要爬取百度迁徙数据所在的URL。可以从百度迁徙网站找到相关的URL。 3. 发送HTTP请求:使用requests库发送HTTP请求,获取百度迁徙网站的HTML代码。 4. 解析HTML代码:使用beautifulsoup4库将获取的HTML代码进行解析,以便提取出需要的数据。 5. 提取数据:根据HTML代码的结构,使用beautifulsoup4库提供的函数提取出需要的数据,如迁徙数据、城市名称等。 6. 存储数据:可以将提取的数据存储到Excel文件、CSV文件或数据库中,以便后续的分析和使用。 7. 循环爬取:如果需要获取多个城市的迁徙数据,可以使用循环来遍历城市列表,不断发送HTTP请求和解析HTML代码,获取并存储数据。 需要注意的是,爬取网站数据要遵守相关的法律法规和伦理道德,尊重网站的服务协议和robots.txt文件,以免引起法律纠纷或侵犯他人的权益。使用爬虫时要尽量减少对网站的访问频率和负荷,以免给网站带来压力。 ### 回答3: Python可以利用第三方库来爬取百度迁徙数据百度迁徙是一个数据平台,可以查看人口迁徙的情况。以下是一个简单的示例代码: ```python import requests import json def get_migration_data(city, start_date, end_date): # 构建请求URL url = 'https://huiyan.baidu.com/migration/cityrank.jsonp?dt=city&id=' + city + '&type=move_in&startDate=' + start_date + '&endDate=' + end_date # 发送请求并获取数据 response = requests.get(url) data = response.text # 处理返回的json数据 data = data[data.index('{'):data.index('}')+1] result = json.loads(data) migration_data = result['data']['list'] # 返回迁徙数据 return migration_data # 示例用法 city = '110000' # 城市ID,以北京市为例 start_date = '20211101' # 开始日期 end_date = '20211110' # 结束日期 migration_data = get_migration_data(city, start_date, end_date) print(migration_data) ``` 以上代码中,使用`requests`库发送HTTP请求,并通过`json`库来处理返回的JSON数据。通过构建请求URL,将城市ID、开始日期和结束日期作为参数,可以获取该城市在指定时间范围内的迁徙数据。示例中的城市ID为北京市的ID,开始日期和结束日期为2021年11月1日至2021年11月10日。 请注意,百度迁徙的数据接口可能会有变化,请根据最新的接口文档进行修改。另外,注意遵守网站的使用条款和相关法律法规。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值