利用python爬取新浪新闻

 先导入所需要的库:

import urllib.request
import re
from requests import RequestException
import requests
import os

模拟UA:

headers = {'content-type': 'application/json',
                   'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36'}
    req = urllib.request.Request(url=url, headers=headers)
    response = urllib.request.urlopen(req)
    html = response.read().decode('utf-8')
    return html

提取信息:

 # 题目
    pattern = re.compile('<h1 class="main-title">(.*?)</h1>', re.S)
    title = pattern.findall(html)[0]

题目,日期,来源,正文一样都可以按这个方法爬取。

数据存储:

 with open('./news/{}.txt'.format(date[:11] + '_' + title), 'w', encoding='utf-8') as f:
        f.write(title + '\t' + date + '\t' + source + '\n')
        for i in article:
            f.write(i.strip())

存储文件夹:

    if not os.path.exists('news'):
        os.mkdir('news')

循环爬取:

  for i in range(len(links)):
        links[i] = links[i].replace('\\', '')

检测异常:

  try:
            html = get_page(url)
            # 解析响应、保存结果
            get_parser(html)
            count += 1
        except:
            print(f'爬取中止,已爬取{count}条新闻')
            f = 0
            break

运行结果截图:

如果需要完整代码,关注博主私聊哟!

联系Q:3041893695

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用 Python 中的 BeautifulSoup 和 requests 库来爬取新浪疫情数据,并使用 MySQL 或者 MongoDB 等数据库进行存储。 以下是一个示例代码: ```python import requests from bs4 import BeautifulSoup import pymysql # 获取新浪疫情数据页面 url = 'https://news.sina.com.cn/2019-ncov/global-' res = requests.get(url) # 解析页面内容 soup = BeautifulSoup(res.text,'html.parser') # 获取全球疫情数据表格 table = soup.find('table', {'class': 'table'}) # 获取表格中的所有行 rows = table.find_all('tr') # 连接数据库 conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', db='covid19', charset='utf8mb4') # 创建游标 cur = conn.cursor() # 循环插入数据到数据库 for row in rows[1:]: # 获取每行数据 data = row.find_all('td') # 提取数据 country = data[0].text.strip() confirmed = int(data[1].text.strip().replace(',', '')) deaths = int(data[2].text.strip().replace(',', '')) recovered = int(data[3].text.strip().replace(',', '')) # 插入数据到数据库 sql = "INSERT INTO covid19 (country, confirmed, deaths, recovered) VALUES (%s, %s, %s, %s)" val = (country, confirmed, deaths, recovered) cur.execute(sql, val) conn.commit() # 关闭连接 cur.close() conn.close() ``` 在上述代码中,我们首先使用 requests 库发送 GET 请求获取新浪疫情数据页面,然后使用 BeautifulSoup 库解析页面内容,获取全球疫情数据表格,并使用 find_all() 方法获取表格中的所有行。 接着,我们使用 pymysql 库连接 MySQL 数据库,并使用游标插入数据到数据库中。在插入数据时,我们首先提取每行数据的国家、确诊数、死亡数和治愈数,并使用 INSERT INTO 语句将数据插入到数据库中。 最后,我们关闭游标和数据库连接。 需要注意的是,在运行代码之前需要先创建数据库和表,代码中的数据库名为 covid19,表名为 covid19,表结构如下: ```sql CREATE TABLE covid19 ( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, country VARCHAR(255) NOT NULL, confirmed INT(11) NOT NULL, deaths INT(11) NOT NULL, recovered INT(11) NOT NULL ) ``` 以上代码仅供参考,具体实现需要根据实际情况进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值