【考公人的福利】Python爬取中公官网资料
【考公人的福利】Python爬取中公官网资料
- 一、简述
- 二、代码
- 三、运行结果
一、简述
写这个代码的目的是能够高效率提取中公官网的资料,例如:申论、行测、面试热点、公安基础知识等。大家可以根据个人需要进行爬取。
二、代码
# -*- coding = utf-8 -*-
# @Time : 2021/2/9 18:00
# @Author : 陈良兴
# @File : 申论范文.py
# @Software : PyCharmimport requests
from bs4 import BeautifulSoup # 网页解析,获取数据
import time # 时间处理
import re # 正则匹配
import xlwt # 进行excel操作def main():datalist = [] # 保存文章标题和内容theme_list = {'4006': '申论热点', '4005': '申论范文', '4007': '申论技巧', '3994': '全部申论','3993': '行测技巧', '3995': '面试技巧', '4011': '面试热点', '4012': '公安基础知识', '3997': '综合指导'}theme = input("请选择爬取内容代码(申论热点:4006、申论范文:4005、申论技巧:4007、全部申论:3994、行测技巧:3993、面试技巧:3995、面试热点:4011、公安基础知识:4012、综合指导:3997):")page = input("请输入需要爬取的页数:")URL_list = get_pages_url(theme, int(page)) # 获取每个文章的URLsavepath = r'.\\' + theme_list[theme] + '.xls'for i in range(len(URL_list)):print("正在获取第{}篇范文".format(i+1))datalist.extend(get_Data(URL_list[i]))time.sleep(0.5)i += 1# print(datalist)saveData(datalist, savepath, theme_list[theme], len(datalist))def askURL(url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}response = requests.get(url=url, headers=headers)html = response.content.decode("utf-8")bs = BeautifulSoup(html, "html.parser") # 解析html,提取数据return bs# 获取每一页的全部url
def get_pages_url(theme, page):data = []for num in range(0, page, 1):url = 'http://www.offcn.com/gwy/ziliao/{}/{}.html'.format(theme, num+1)print("正在提取第" + str(num+1) + "页")bs = askURL(url)time.sleep(0.5)list01 = str(bs.find_all('ul', class_="lh_newBobotm02"))pat_link = r'<a href="(.*?)" target="_blank" title=.*?'link = re.findall(pat_link, list01, re.S)link_list = str(link).strip("[").strip("]").replace("'", "").split(",")data.extend(link_list)return data# 解析没一个URL,获取数据
def get_Data(url):articleData = []bs = askURL(url)title_MsgStr = bs.select("h1")title = ""for title_str in title_MsgStr:title = title + title_str.textarticleData.append(title)content = ""list01 = str(bs.find_all('div', class_="offcn_shocont"))pat_link = r'<p>(.*?)</p>'link = re.findall(pat_link, list01, re.S)for i in range(len(link)):content = content + str(link[i]).replace("<strong>", "").replace("</strong>", "").replace('<span style="font-size: 12px;">', "")i += 1articleData.append(str(content))return articleData# 保存数据
def saveData(datalist, savepath, name, sum):m = 0print("save......")book = xlwt.Workbook(encoding="utf-8", style_compression=0) # 创建workbook对象sheet = book.add_sheet(name, cell_overwrite_ok=True) # 创建工作表col = ("标题", "内容")for i in range(0, 2):sheet.write(0, i, col[i]) # 列名for j in range(int(sum/2)):print("第%d条" % (j+1))for k in range(0, 2):if (m+1)/2 == 0:j += 1sheet.write(j+1, k, datalist[m])m += 1book.save(savepath) # 保存数据表if __name__ == '__main__':main()print("爬取完毕!!!")
三、运行结果
1、运行程序,根据提示输入要爬取内容的代码;
2、输入要爬取的网页数(其中每页有55篇文章的URL),回车;
3、爬取结果
本次爬取的是220篇申论范文,见下图。
【考公人的福利】Python爬取中公官网资料相关推荐
- python 爬取NBA中国官网球员数据
现在很多网站的数据都是通过Ajax动态加载的,我认为这恰恰降低了我们爬取的难度,因为我们无需考虑如何解析数据,只需要将json文件转换为字典形式,通过字典的键就可以取得我们所需要的数据. 爬取网站:N ...
- Python爬取英雄联盟官网图片
脚本下载图片预览-草丛三兄弟 #encoding = gbk import re,os,requests,json from selenium import webdriver import ppri ...
- 利用python爬取英雄联盟官网英雄皮肤
思路: 1.获取JS源代码 2.获取英雄ID 3.拼接完整路径 4.下载的位置 5.下载 import requests import re import json#获取JS源代码 def downl ...
- Python爬取王者荣耀官网图片
脚本下载图片预览 两个月之前写的脚本,现在依然可用. #encoding=utf-8 #python3.6 import re,requests,json,os,time def down(url): ...
- Python爬取英雄联盟官网壁纸源码分享
import json import re import requests import time def getLOLImages(): header = {'User-Agent':'Mozill ...
- python爬虫爬取王者荣耀官网全部英雄头像(源码分享)
这篇文章为源码分享,爬虫的分析过程请阅读文章 <用python爬取王者荣耀官网的英雄皮肤海报(含源码)> 源码 import requests import json from bs4 i ...
- python爬虫爬取王者荣耀官网全部装备图片(源码分享)
这篇文章为源码分享,爬虫的分析过程请阅读文章 <用python爬取王者荣耀官网的英雄皮肤海报(含源码)> 源码 import requests from bs4 import Beauti ...
- python爬取2019年计算机就业_2019年最新Python爬取腾讯招聘网信息代码解析
原标题:2019年最新Python爬取腾讯招聘网信息代码解析 前言 初学Python的小伙们在入门的时候感觉这门语言有很大的难度,但是他的用处是非常广泛的,在这里将通过实例代码讲解如何通过Python ...
- Python爬取豆瓣Top250电影可见资料并保存为excel形式
Python爬取豆瓣Top250电影可见资料并保存为excel形式 利用requests第三方库实现网页的元素爬取,再使用openpyxl库进行信息的录入. 具体思路 1.分析网页的headers. ...
最新文章
- 【建站系列教程】2、数据源
- 一个极好的ALV例子
- WINCE下的MINGW交叉编译环境下内存崩溃地址的查找方法。
- 爬虫 - 豆瓣网《小王子》热评
- [渝粤教育] 西安交通大学 医学伦理学(2021秋) 参考 资料
- 【转】医疗业务学习笔记--DICOM协议的基础内容!!!!!!!!!!
- Spring Cloud Zuul网关 Filter、熔断、重试、高可用的使用方式。
- 【会议】2009-11-13
- [置顶] 火车票余票接口API使用方法
- php查看音频属性,PHP获取音频mp3文件时长或音频文件其它参数属性
- 软件工程基础 实验1《可行性研究与项目计划》
- hourglass论文_Hourglass模块 网络结构 代码
- 如何设置excel回车换行
- 反素数java_【Java自学】 反素数
- 基于Python的新闻识别预测n-gram模型和LSTM模型
- 伟大的教育家:美国数学免费教学大神
- 腾讯力推开放平台Q+
- 底量超顶量超级大黑马指标源码_通达信最准的买卖指标,超准短线暴涨指标源码...
- 3GPP 38.885 V2X解决方案
- 艾司博讯:拼多多标题关键词优化方法