python3脚本抓取阿里云、华为云、腾讯云文章使用参考文档

本脚本运行环境:pycharm

一、部署说明

1.文档说明

以上三个脚本分别对应阿里云、腾讯云、华为云云厂商的文章数据抓取
本文档只是基于python,提供一种快速抓取云厂商数的途径,非统一抓取数据标准,相比于手动抓取数据,效率更高,质量更高,文章抓取只需“运行”。但脚本如果出现问题维护起点较高 需要具备并掌握python基础知识。
本文档在不断完善中。

2.环境准备

python3
pycharm安装python3
linux安装python3
不会环境安装可直接搜素关键词

二、脚本说明

1.脚本所用到的模块(库)

1.JSON模块
json是一种轻量级的数据交换格式,易于人阅读和编写。
参考链接:Python JSON | 菜鸟教程 (runoob.com)

2.request模块
Requests 请求库,基于urllib,采⽤Apache2 Licensed开源协议的 HTTP 库,阻塞式 HTTP 请求库,发出一个请求,一直等待服务器响应后,程序才能进行下一步处理。
参考链接:python中requests库使用方法详解 - 知乎 (zhihu.com)

3.beautifulsoup4解析库
Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据。
参考链接:Python中BeautifulSoup库的用法_阎松的博客-CSDN博客_beautifulsoup库的作用
Python BS4解析库用法详解 (biancheng.net)

4.Pandas DataFrame
Pandas 主要包括以下几个特点:
它提供了一个简单、高效、带有默认标签(也可以自定义标签)的 DataFrame 对象。
能够快速得从不同格式的文件中加载数据(比如 Excel、CSV 、SQL文件),然后将其转换为可处理的对象;
能够按数据的行、列标签进行分组,并对分组后的对象执行聚合和转换操作;
能够很方便地实现数据归一化操作和缺失值处理;
能够很方便地对 DataFrame 的数据列进行增加、修改或者删除的操作;
能够处理不同格式的数据集,比如矩阵数据、异构数据表、时间序列等;
提供了多种处理数据集的方式,比如构建子集、切片、过滤、分组以及重新排序等。

DataFrame是一种二维表格型数据的结构,既有行索引,也有列索引。行索引是 index,列索引是 columns。在创建该结构时,可以指定相应的索引值。
参考链接:Pandas DataFrame入门教程(图解版) (biancheng.net)
pandas下载安装:Pandas库下载和安装 (biancheng.net)

三、脚本排错参考

一定要把上述模块(库)安装到环境里 否则会报错

1.例如没装pandas的报错:
Traceback (most recent call last):
File “E:\apps\pycharm\item\test Tencentcloud.py”, line 5, in
from pandas import DataFrame
ModuleNotFoundError: No module named ‘pandas’

解决办法:pycharm Ctrl+Alt+s
再点击这个“+”如图:

搜索pandas 并点击“install Package”
如果安装失败 请按照官方文档操作步骤进行安装。

2.代理报错
HTTPSConnectionPool(host=‘developer.aliyun.com’, port=443): Max retries exceeded with url: /indexFeed/?pageNum=1 (Caused by ProxyError(‘Cannot connect to proxy.’, NewConnectionError(‘<urllib3.connection.HTTPSConnection object at 0x00000291A043E1F0>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。’))

解决办法:把代理关了

代码

import requests
from bs4 import BeautifulSoup
from pandas import DataFrame


class Aliyun:
    def __init__(self):
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
                          'Chrome/90.0.4430.72 Safari/537.36 '
        }
        self.filename = './article/aliyuncloud.xlsx'
        self.columns = ['厂商', '标题', '简介', '正文', 'url', '时间', '发布者']

    def get_request(self, url):
        return requests.get(url, headers=self.headers).text

    def post_request(self, url):
        return requests.post(url, headers=self.headers).text

    def post_request_with_payload(self, url, payload):
        return requests.post(url, json=payload, headers=self.headers).text

    def write_to_excel(self, data):
        df = DataFrame(data=data, columns=self.columns)
        df.to_excel(self.filename)

    def start(self):
        data = []
        for i in range(1, 11):
            index_feed = self.get_request('https://developer.aliyun.com/indexFeed/?pageNum={}'.format(i))
            index_feed = BeautifulSoup(index_feed, "lxml")
            for item in index_feed.find_all('li', class_="feed-item feed-article"):
                url = 'https://developer.aliyun.com/article/' + item.get('data-id')
                title = item.find_next('p', class_="feed-article-title")
                title = title.text if title is not None else ''
                time = item.find_next('span', class_="feed-article-label feed-article-time")
                time = time if time is not None else ''
                article = self.get_request(url)
                article = BeautifulSoup(article, 'lxml')
                author = article.find('a', class_='author-right-name')
                author = author.text if author is not None else ''
                content = str(article.find('div', class_="article-hide-content"))
                content = content if content != "None" else ''
                summary = article.find('div', class_="article-desc")
                summary = summary.text if summary is not None else ''
                summary = summary.replace('\n', '')
                data.append(['阿里云', title, summary, content, url, time, author])
        self.write_to_excel(data)


if __name__ == '__main__':
    aliyun = Aliyun()
    aliyun.start()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

送个祝福给小豪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值