Python爬取整个网页的数据总结

虾米哥 阅读:195 2021-06-03 14:30:44 评论:0

本案例是基于PyCharm开发的,也可以使用idea。
在项目内新建一个python文件Test.py
Test.py

# 导入urllib下的request模块 
import urllib.request 
# 导入正则匹配包 
import re 
 
# -*- encoding:utf-8 -*- 
""" 
@作者:小思 
@文件名:Test.py 
@时间:2018/11/13  14:42 
@文档说明:测试爬虫(以爬取https://www.ittime.com.cn/news/zixun.shtml上的网页数据为例) 
""" 
 
# 步骤 
# 1.确定要爬取数据的网址 
# 2.获取该网址的源码 
# 3.使用正则表达式去匹配网址的源码(匹配所需要的数据类型) 
# 4.将爬取的数据保存至本地或者数据库 
 
# 确定要爬取数据的网址 
url="https://www.ittime.com.cn/news/zixun.shtml" 
# 该网址的源码(以该网页的原编码方式进行编码,特殊字符编译不能编码就设置ignore) 
webSourceCode=urllib.request.urlopen(url).read().decode("utf-8","ignore") 
 
# 匹配数据的正则表达式 
# 所有的图片 
imgRe=re.compile(r'src="(.*?\.jpg)"') 
# 所有的标题 
titleRe=re.compile(r'<h2><a href=".*?" target="_blank">(.*?)</a></h2>') 
# 所有的简介 
contentRe=re.compile(r'<p>(.*?)</p>') 
# 所有的作者 
authorRe=re.compile(r'<span class="pull-left from_ori">(.*?)<span class="year">(.*?)</span></span>') 
# 匹配网页对应的标题数据 
titles=titleRe.findall(webSourceCode) 
images=imgRe.findall(webSourceCode) 
content=contentRe.findall(webSourceCode) 
authors=authorRe.findall(webSourceCode) 
print("标题==============================================================") 
for title in titles: 
    print(title) 
print("图片==============================================================") 
for image in images: 
    print("https://www.ittime.com.cn"+image) 
print("内容简介==============================================================") 
for c in content: 
    print(c) 
print("作者==============================================================") 
for author in authors: 
    print(author[0]) 
print("时间==============================================================") 
for time in authors: 
    print(author[1]) 
 
 
 
 
 

运行Test.py,控制台输出信息。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果分页的信息也全部需要,则写一个集合来保存这些需要读取数据的网址,将Test.py封装成方法。
在循环里依次调用
Test.py

# 导入urllib下的request模块 
import urllib.request 
# 导入正则匹配包 
import re 
 
# -*- encoding:utf-8 -*- 
""" 
@作者:小思 
@文件名:Test.py 
@时间:2018/11/13  14:42 
@文档说明:测试爬虫(以爬取https://www.ittime.com.cn/news/zixun.shtml上的图片为例) 
""" 
 
# 步骤 
# 1.确定要爬取数据的网址 
# 2.获取该网址的源码 
# 3.使用正则表达式去匹配网址的源码(匹配所需要的数据类型) 
# 4.将爬取的数据保存至本地或者数据库 
def getResouces(url): 
    # 该网址的源码(以该网页的原编码方式进行编码,特殊字符编译不能编码就设置ignore) 
    webSourceCode=urllib.request.urlopen(url).read().decode("utf-8","ignore") 
 
    # 匹配数据的正则表达式 
    # 所有的图片 
    imgRe=re.compile(r'src="(.*?\.jpg)"') 
    # 所有的标题 
    titleRe=re.compile(r'<h2><a href=".*?" target="_blank">(.*?)</a></h2>') 
    # 所有的简介 
    contentRe=re.compile(r'<p>(.*?)</p>') 
    # 所有的作者 
    authorRe=re.compile(r'<span class="pull-left from_ori">(.*?)<span class="year">(.*?)</span></span>') 
    # 匹配网页对应的标题数据 
    titles=titleRe.findall(webSourceCode) 
    images=imgRe.findall(webSourceCode) 
    content=contentRe.findall(webSourceCode) 
    authors=authorRe.findall(webSourceCode) 
    print("标题==============================================================") 
    for title in titles: 
        print(title) 
    print("图片==============================================================") 
    for image in images: 
        print("https://www.ittime.com.cn"+image) 
    print("内容简介==============================================================") 
    for c in content: 
        print(c) 
    print("作者==============================================================") 
    for author in authors: 
        print(author[0]) 
    print("时间==============================================================") 
    for time in authors: 
        print(author[1]) 
 
# 读取前十页的数据 
for i in range(2,10): 
    getResouces(f"https://www.ittime.com.cn/news/zixun_{i}.shtml") 
 
 
 

注意!!!
①无论是java后台还是python后台需要大量的数据,都可以使用这种方式,它读取速度非常快,可以保存到本地,或者数据库。读取的时候要保持有网络哦~

②使用python爬取网页的数据并不困难,重要的是对你所需的数据的源代码的分析,要善于寻找规律,并且写出正确的正则表达式

说在最后的话:编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~


标签:Python
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
排行榜
KIKK导航

KIKK导航

关注我们