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——校园官网内容爬取相关推荐

  1. python爬虫网络数据包_Python爬虫之多线程图虫网数据爬取(十六)

    Python爬虫之多线程图虫网数据爬取(十六) 发布时间:2019-05-14 10:11, 浏览次数:289 , 标签: Python 原创不易,转载前请注明博主的链接地址:Blessy_Zhu h ...

  2. Python爬虫实战使用scrapy与selenium来爬取数据

    系列文章目录 实战使用scrapy与selenium来爬取数据 文章目录 系列文章目录 前言 一.前期准备 二.思路与运行程序 1.思路 2.运行程序 三.代码 1.代码下载 2.部分代码 总结 前言 ...

  3. 爬虫实战(1)————百度首页爬取

    百度首页爬取 提供我的爬取页面的思路,不一定是正确的但是我都是按照这个思路走的 第一步(页面分析) 可以看到页面非常简单 那么我们的需求就是 首先 构造url 然后观察我们想要爬取的对象 我们的需求是 ...

  4. scrapy爬虫实战——米哈游官网数据爬取

    项目总览 前言 项目建立 爬虫代码编写 爬虫运行 导出到Excel 后记 前言 scrapy是一个强大的爬虫框架,熟练地使用它几乎可以随心所欲地抓取任何网页上想要获得的数据.笔者初学爬虫,需要项目练手 ...

  5. python爬取网易云音乐飙升榜音乐_Python爬虫实战,30行代码轻松爬取网易云音乐热歌榜...

    在开始讲解思路之前,我们首先了解下网络状态码,为什么要看这个呢?以后你会回来感谢我的,嘻嘻! 一般网络状态有以下几种: 200(成功) 服务器成功处理了请求.一般来说,这意味着服务器提供所请求的页面, ...

  6. 正经网站爬虫实战,如何快速使用Selenium爬取租房信息

    租房信息爬虫实战 摘要 1.技术选型 1.1 Selenium 1.2 MySql 2 程序思路 3 程序实现(python selenium) 3.1 引入需要的包 3.2 初始化驱动和数据库连接 ...

  7. 爬虫实战:链家租房数据爬取,实习僧网站数据爬取

    前面已经进行了爬虫基础部分的学习,于是自己也尝试爬了一些网站数据,用的策略都是比较简单,可能有些因素没有考虑到,但是也爬取到了一定的数据,下面介绍两个爬过的案例. 爬虫实战 链家网站爬取 实习僧网站爬 ...

  8. 【Python网络爬虫实战篇】使用selenium+requests爬取下载高清源视频:关于爬取m3u8文件链接解析为ts视频合并成mp4视频的分析实战

    这两天博主在摸鱼时,偶然间接触到了流媒体的概念,一时间来了兴致.再加上之前博主有着七.八年的视频制作经验,深知视频素材获取的不易.因此,打算利用自己所学的python网络爬虫的知识,通过编写代码实现获 ...

  9. Python爬虫实战,requests+openpyxl模块,爬取小说数据并保存txt文档(附源码)

    前言 今天给大家介绍的是Python爬取小说数据并保存txt文档,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这样 ...

最新文章

  1. TypeError: Router.use() requires a middleware function but got a Object报错解决
  2. 利用Bdrive打造个人私有云存储解决方案
  3. python datetime 加一个月_Python日期的加减等操作的示例
  4. Dubbo注册中心-监控中心安装笔记(CentOS7)
  5. LayIM v2.x 正式开源,Web 即时通讯前端解决方案
  6. 视频教程-微信小程序直播开发快速入门-微信开发
  7. win32com 读取excel
  8. 学习笔记——Servlet原理
  9. 最新全国行政区域编码(2018年12月)
  10. CAD卸载不干净不能重新安装(恶心死我了)
  11. 程序员应该看的十大电影
  12. 中国企业信息化发展史
  13. 晶闸管整流桥matlab仿真,整流12脉中频电源MATLAB-Simulink仿真及谐波分析
  14. ECCV 2020 论文大盘点-目标跟踪篇
  15. Photoshop技巧:[2]如何抠头发?
  16. windows神器,让你的效率直线提升
  17. 设计模式七大设计原则
  18. argc与argv参数的含义
  19. GEE:对矢量数据/行政边界设置填充颜色为空,只显示边界
  20. 纳赫鲁伯的地下城:混沌护符

热门文章

  1. pythonreader下载_使用Python的pandas-datareader包下载雅虎财经股价数据
  2. DELL 笔记本首次安装VS2010 快捷键全部无效
  3. 时间序列多步预测的五种策略
  4. 【电子学会】2022年03月图形化三级 -- 二进制像素绘制程序
  5. python实现rsa加密解密_python实现RSA加解密
  6. C#实战之CAD二次开发004:插入尺寸标注
  7. 基于JAVA房产销售平台计算机毕业设计源码+系统+lw文档+部署
  8. dirsearch[目录扫描工具]
  9. 首届“全国人工智能大赛”正式启动,作为大赛支撑平台,和鲸科技助力年度顶级AI赛事
  10. idea运行web项目