爬虫实战1——校园官网内容爬取
Python使用requests爬取网页
- 简介
- 一. 自动翻页的实现
- 1.观察:
- 2.代码实现:
- 二.时间的限定
- 1.遇到的困难:
- 2.解决过程:
- 三.阅读数的爬取
- 1.遇到的困难:
- 2.解决过程:
- 四.完整代码
简介
项目内容:爬取福大要文(链接)
要求: 1.包含发布日期,作者,标题,阅读数以及正文。 2.可自动翻页。 3.范围:2020年内
一. 自动翻页的实现
1.观察:
点开链接,下拉到底实现手动翻页并观察顶部url的变化,可以发现有一定的规律。
第一页url:
第二页url:
第三页url:
…
因此我们大致可以推断翻页的实现是通过改变(num).html中的数字num实现的。
2.代码实现:
利用简单的for循环实现自动翻页
for i in range(1,18,1):url="http://news.fzu.edu.cn/html/fdyw/{}.html".format(i)
二.时间的限定
1.遇到的困难:
来到福大要闻的首页,跳转至第16页(图片内备注错了),发现部分要闻为20年发布,另一些为19年。因此,单纯靠前文提及的for循环是无法实现项目要求的(会有不需要的19年数据被爬下)
2.解决过程:
增加一个for循环,若“2019”字符串在时间中则break退出循环。(以下为部分代码)
time=li.select(".list_time")[0].text # 获取并打印要闻发布日期
if "2019" not in time:print(num,"发布日期:",time)times.append(time) # 储存发布时间
else:break
三.阅读数的爬取
1.遇到的困难:
使用正常的爬取方法无法爬取到阅读数
2.解决过程:
右键“检查”,观察网页源码,发现在下方仿佛隐藏着一个url,也许跟阅读数的爬取有些关联。
选择Network,深入探索一下,果然有发现。
点开不同要闻,不同阅读数,仅id后的数字不一样。所以我思考,是否可以通过正则匹配扣出那串数字,就可以爬取到阅读数。(以下为部分代码)
readcount=[] #建立空字典储存数据
a=re.compile("id=(.*?)'",re.S|re.I) # 惰性匹配
result=a.findall(innerHtml.text)[-1]
ids.append(result)readcount_url = 'https://news.fzu.edu.cn/interFace/getDocReadCount.do?id=' # 获取并打印阅读数
link = readcount_url+ids[-1] # 拼接url
r = requests.get(link)
print("阅读数:",r.text)
readcount.append(r.text) # 储存阅读数
正则匹配时候出现问题的朋友可以用这个网站测试下再写入代码:在线正则表达式测试
四.完整代码
import requests # 导入请求包
from bs4 import BeautifulSoup # 导入解析包
import sqlalchemy
import pandas as pd
import re # 导入正则# 创建空字典用于储存数据
ids=[]
urls=[]
times=[]
texts=[]
names=[]
titles=[]
readcount=[]
num=1for i in range(1,17,1): url="http://news.fzu.edu.cn/html/fdyw/{}.html".format(i) # for循环实现自动翻页html=requests.get(url) soup=BeautifulSoup(html.text,"lxml") # 解析urllis=soup.select(".list_main_content li")for li in lis:time=li.select(".list_time")[0].text # 获取并打印要闻发布日期if "2019" not in time:print(num,"发布日期:",time)times.append(time) # 储存发布时间else:breaktitle=li.select("a")[0].text # 获取并打印要闻标题print("标题:",title) titles.append(title) # 储存标题innerUrl="http://news.fzu.edu.cn"+li.select("a")[0]["href"] # 获取并打印单条要闻网页链接print("链接:",innerUrl) urls.append(innerUrl)num+=1 # 给结果标号innerHtml=requests.get(innerUrl)soup=BeautifulSoup(innerHtml.text,"lxml") # 解析innerUrlauthors=soup.select(".detail_main_content div") # 获取并打印要闻作者for au in authors:author=au.select("span#author")[0].textprint("作者:",author)names.append(author) # 储存作者contents=soup.select("div#news_content_display") # 获取并打印要闻内容for co in contents:print("内容:",co.text) texts.append(co.text)a=re.compile("id=(.*?)'",re.S|re.I) # 惰性匹配 result=a.findall(innerHtml.text)[-1]ids.append(result)readcount_url='https://news.fzu.edu.cn/interFace/getDocReadCount.do?id='+ids[-1] # 获取并打印阅读数print(readcount_url)r = requests.get(readcount_url)print("阅读数:",r.text)readcount.append(r.text) # 储存阅读数#保存数据为df格式
data = {"title":titles,"author":names,"release_time":times,"click_number":readcount,"url":urls,"content":texts}
df=pd.DataFrame(data)# 存入数据库
engine=sqlalchemy.create_engine("mysql+pymysql://root:@localhost:3306/demo")
df.to_sql(name="要闻",con=engine,if_exists="append",index=False)
写在最后:lwgg我男神
爬虫实战1——校园官网内容爬取相关推荐
- python爬虫网络数据包_Python爬虫之多线程图虫网数据爬取(十六)
Python爬虫之多线程图虫网数据爬取(十六) 发布时间:2019-05-14 10:11, 浏览次数:289 , 标签: Python 原创不易,转载前请注明博主的链接地址:Blessy_Zhu h ...
- Python爬虫实战使用scrapy与selenium来爬取数据
系列文章目录 实战使用scrapy与selenium来爬取数据 文章目录 系列文章目录 前言 一.前期准备 二.思路与运行程序 1.思路 2.运行程序 三.代码 1.代码下载 2.部分代码 总结 前言 ...
- 爬虫实战(1)————百度首页爬取
百度首页爬取 提供我的爬取页面的思路,不一定是正确的但是我都是按照这个思路走的 第一步(页面分析) 可以看到页面非常简单 那么我们的需求就是 首先 构造url 然后观察我们想要爬取的对象 我们的需求是 ...
- scrapy爬虫实战——米哈游官网数据爬取
项目总览 前言 项目建立 爬虫代码编写 爬虫运行 导出到Excel 后记 前言 scrapy是一个强大的爬虫框架,熟练地使用它几乎可以随心所欲地抓取任何网页上想要获得的数据.笔者初学爬虫,需要项目练手 ...
- python爬取网易云音乐飙升榜音乐_Python爬虫实战,30行代码轻松爬取网易云音乐热歌榜...
在开始讲解思路之前,我们首先了解下网络状态码,为什么要看这个呢?以后你会回来感谢我的,嘻嘻! 一般网络状态有以下几种: 200(成功) 服务器成功处理了请求.一般来说,这意味着服务器提供所请求的页面, ...
- 正经网站爬虫实战,如何快速使用Selenium爬取租房信息
租房信息爬虫实战 摘要 1.技术选型 1.1 Selenium 1.2 MySql 2 程序思路 3 程序实现(python selenium) 3.1 引入需要的包 3.2 初始化驱动和数据库连接 ...
- 爬虫实战:链家租房数据爬取,实习僧网站数据爬取
前面已经进行了爬虫基础部分的学习,于是自己也尝试爬了一些网站数据,用的策略都是比较简单,可能有些因素没有考虑到,但是也爬取到了一定的数据,下面介绍两个爬过的案例. 爬虫实战 链家网站爬取 实习僧网站爬 ...
- 【Python网络爬虫实战篇】使用selenium+requests爬取下载高清源视频:关于爬取m3u8文件链接解析为ts视频合并成mp4视频的分析实战
这两天博主在摸鱼时,偶然间接触到了流媒体的概念,一时间来了兴致.再加上之前博主有着七.八年的视频制作经验,深知视频素材获取的不易.因此,打算利用自己所学的python网络爬虫的知识,通过编写代码实现获 ...
- Python爬虫实战,requests+openpyxl模块,爬取小说数据并保存txt文档(附源码)
前言 今天给大家介绍的是Python爬取小说数据并保存txt文档,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这样 ...
最新文章
- TypeError: Router.use() requires a middleware function but got a Object报错解决
- 利用Bdrive打造个人私有云存储解决方案
- python datetime 加一个月_Python日期的加减等操作的示例
- Dubbo注册中心-监控中心安装笔记(CentOS7)
- LayIM v2.x 正式开源,Web 即时通讯前端解决方案
- 视频教程-微信小程序直播开发快速入门-微信开发
- win32com 读取excel
- 学习笔记——Servlet原理
- 最新全国行政区域编码(2018年12月)
- CAD卸载不干净不能重新安装(恶心死我了)
- 程序员应该看的十大电影
- 中国企业信息化发展史
- 晶闸管整流桥matlab仿真,整流12脉中频电源MATLAB-Simulink仿真及谐波分析
- ECCV 2020 论文大盘点-目标跟踪篇
- Photoshop技巧:[2]如何抠头发?
- windows神器,让你的效率直线提升
- 设计模式七大设计原则
- argc与argv参数的含义
- GEE:对矢量数据/行政边界设置填充颜色为空,只显示边界
- 纳赫鲁伯的地下城:混沌护符
热门文章
- pythonreader下载_使用Python的pandas-datareader包下载雅虎财经股价数据
- DELL 笔记本首次安装VS2010 快捷键全部无效
- 时间序列多步预测的五种策略
- 【电子学会】2022年03月图形化三级 -- 二进制像素绘制程序
- python实现rsa加密解密_python实现RSA加解密
- C#实战之CAD二次开发004:插入尺寸标注
- 基于JAVA房产销售平台计算机毕业设计源码+系统+lw文档+部署
- dirsearch[目录扫描工具]
- 首届“全国人工智能大赛”正式启动,作为大赛支撑平台,和鲸科技助力年度顶级AI赛事
- idea运行web项目