python爬虫—爬取英文名以及正则表达式的介绍

python爬虫—爬取英文名以及正则表达式的介绍

爬取英文名:

一.  爬虫模块详细设计

(1)整体思路

对于本次爬取英文名数据的爬虫实现,我的思路是先将A-Z所有英文名的连接爬取出来,保存在一个csv文件中;再读取csv文件当中的每个英文名链接,采用循环的方法读取每一个英文名链接,根据每个英文名链接爬取每个链接中的数据,保存在新的csv文件当中。

需要写一个爬取英文名链接的函数、将爬取的内容保存在csv文件的函数以及读取csv文件内容的函数、爬取英文名详情页内容的函数。

表5.3.1


函数名


作用


def get_nameLink():


爬取英文名链接


def save_to_csv(dict,filename):


将爬取的内容以字典的形式保存在csv文件


def get_WebLinkcsv(name):


读取csv文件的内容


def get_namedata():


根据链接爬取每个英文名的具体数据

(2)爬取英文名链接

首先观察A-Z英文名的网页的内容,发现每个字母都对应一个网站,刚打开网站只会显示三个模块的英文名,每个模块30个英文名;关于一个字母的更多的英文名是根据鼠标的移动再进行动态的加载才会在网页上显示出来;但每个字母的英文名不同的网页上显示。如图:

图5.3.2(1)

经观察,每个字母的所有英文名都可以根据页数来确定,可以不用动态爬取的方法,根据观察每个字母的英文名页数来确定每个字母英文名的数量进行爬取链接。链接格式为:

https://www.thebump.com/b/baby-girl-names-that-start-with-{letter}?sort_by=popular&page={number}&page_size=30&gender=&request-by-ajax=true

Letter表示A-Z的字母,number表示页数,page_size表示每个页面所显示的英文名数量为30个。

代码如下:

图5.3.2(2)

(3) 爬取详情页

打开某个英文名对应的详情页,右键点开查看需要爬取内容的审查元素,观察每个模块内容所对应的标签进行解析。经观察,有的英文名存在Celebrity模块,有的英文名不存在Celebrity模块,就需要进行判断,若存在就解析保存在csv文件中,不存在显示为空跳过,继续解析下一个内容。如图:

Abigail名字中就有Celebrity模块的内容,Annabelle名字中就没有这个Celebrity中的内容,这种情况下,就会存入空的内容。

图5.3.3(1)

代码如下:

采用try except进行异常处理。

图5.3.3(2)

(4)存储内容

采用字典的形式存入内容保存在csv文件当中。字典(dictionary)是Python中另一个非常有用的内置数据类型,列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取;字典是一种映射类型,字典用“{ }”标识,它是一个无序的键(key)、值(value)对集合,键(key)必须使用不可变类型。

def save_to_csv(dict,filename)函数表示存储数据,使用字典形式存储,因为本次实验数据较大,不能一次性爬取,所以在爬取内容的时候都是分开爬的,对于数据的存储也是采用追加的方式进行存取的。

如图:

图5.3.4

(5)读取文件

读取文件主要是用来读取名字链接,根据名字链接进行详情页的爬取

图5.3.5

二.  调试与测试

(1) 调试过程中遇到的问题

(1)在爬取关于A的英文名链接的时候,只出现了90个链接,剩下的爬不出来,但在网页中剩下的英文名可以根据鼠标的滑动进行加载出现在网页中,经观察可以根据此链接https://www.thebump.com/b/baby-girl-names-that-start-with-{letter}?sort_by=popular&page={number}&page_size=30&gender=&request-by-ajax=true,进行获取每个英文名的爬取以及对每个字母的英文名数量进行确认;用此url形式就相当于是进行翻页操作,每一页只有30个英文名。

(2)在运行的过程中会显示缩紧错误,但在观察过程中,并没有缩进的错误,在网上查询得只是因为在定义一个函数时,函数里面没有内容才会报此错误。

(3)在进行几次爬取过程中,会经常在某一个固定的地方停止爬取,经多次修改,最终发现是请求头的问题。

(2)爬取显示

爬取的内容会保存在csv文件当中,如图:

图5.2

三 课程设计心得与体会

(1)   通过这次课程设计,使我更加扎实的掌握了有关Python方面的知识,在设计过程中,虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺以及经验不足。实践出真知,通过亲自动手设计,使我们找你哥我的知识不再是纸上谈兵。

(2)   过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在实践“过而能改,善莫大焉”的知行观。这次的课程设计终于顺利完成了,在设计中遇到了很多问题,最后在同学们的帮助下迎刃而解,这也告诉我们,在今后的社会发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一解决,只有这样才能成功的做成想做的事,才能在今后的道路上披荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人的认可。

(3)   课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门思辨课,给了我许多道,很多思。是我对抽象理论有了具体的认识。通过这次课程设计,我对正则表达式有了更深一步的理解运用,通过查询资料也了解了Python的爬虫原理。我认为,在这学期的实验中,不仅培养了独立思考、动手操作能力,在各种其他能力上也都有了提高。更重要的是,在课程设计学习中,我学会了很多学习方法,而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践。在学习、在实践。这对于我们的将来也有很大的帮助。

一:什么是正则表达式

正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

  给定一个正则表达式和另一个字符串,我们可以达到如下的目的:

  • 给定的字符串是否符合正则表达式的过滤逻辑(“匹配”);
  • 通过正则表达式,从文本字符串中获取我们想要的特定部分(“过滤”)。

二:爬虫的四个主要步骤

  1. 明确目标 (要知道你准备在哪个范围或者网站去搜索)
  2. 爬 (将所有的网站的内容全部爬下来)
  3. 取 (过滤和匹配我们需要的数据,去掉没用的数据)
  4. 处理数据(按照我们想要的方式存储和使用)

三:正则表达式匹配规则

元字符 说明
. 代表任意字符
\  
[ ] 匹配内部的任一字符或子表达式
[^] 对字符集和取非
- 定义一个区间
\ 对下一字符取非(通常是普通变特殊,特殊变普通)
* 匹配前面的字符或者子表达式0次或多次
*? 惰性匹配上一个
+ 匹配前一个字符或子表达式一次或多次
+? 惰性匹配上一个
? 匹配前一个字符或子表达式0次或1次重复
{n} 匹配前一个字符或子表达式
{m,n} 匹配前一个字符或子表达式至少m次至多n次
{n,} 匹配前一个字符或者子表达式至少n次
{n,}? 前一个的惰性匹配
^ 匹配字符串的开头
\A 匹配字符串开头
$ 匹配字符串结束
[\b] 退格字符
\c 匹配一个控制字符
\d 匹配任意数字
\D 匹配数字以外的字符
\t 匹配制表符
\w 匹配任意数字字母下划线
\W 不匹配数字字母下划线

四.正则表达式例子

学习基础的例子,可以参见博客,个人觉得比较详细:https://blog.csdn.net/weixin_44258187/article/details/85307979

原文地址:https://www.cnblogs.com/cyt99/p/12079029.html

时间: 2024-10-22 01:22:48

python爬虫—爬取英文名以及正则表达式的介绍的相关文章

用Python爬虫爬取广州大学教务系统的成绩(内网访问)

用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code] 在{}之前的部分就是"选择器"."选择器"指明了{}中的"样式"的作用对象,也就是"样式"作用于网页中的哪些元素.可参考:http://www.w3school.com.cn/cssref/css_selectors.asph

python爬虫爬取微博评论案例详解

这篇文章主要介绍了python爬虫爬取微博评论,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 数据格式:{"name":评论人姓名,"comment_time":评论时间,"comment_info":评论内容,"comment_url":评论人的主页} 以上就是我们需要的信息. 具体操作流程: 我们首相将主页获取完成以后,我们就会发现,其中 的内容带有相

python爬虫爬取csdn博客专家所有博客内容

python爬虫爬取csdn博客专家所有博客内容: 全部过程采取自动识别与抓取,抓取结果是将一个博主的所有 文章存放在以其名字命名的文件内,代码如下 结果如下: 版权声明:本文为博主原创文章,未经博主允许不得转载.

python爬虫爬取美女图片

python 爬虫爬取美女图片 #coding=utf-8 import urllib import re import os import time import threading def getHtml(url): page = urllib.urlopen(url) html = page.read() return html def getImgUrl(html,src): srcre = re.compile(src) srclist = re.findall(srcre,html)

Python爬虫爬取博客园并保存

Python爬虫爬取博客园并保存        爬取博客园指定用户的文章修饰后全部保存到本地 首先定义爬取的模块文件: crawlers_main.py 执行入口 url_manager.py url管理器 download_manager.py 下载模块 parser_manager.py html解析器(解析html需要利用的内容) output_manager.py 输出html网页全部内容文件(包括css,png,js等) crawlers_main.py 执行入口 1 # coding

Python爬虫爬取知乎小结

博客首发至Marcovaldo's blog (http://marcovaldong.github.io/) 最近学习了一点网络爬虫,并实现了使用python来爬取知乎的一些功能,这里做一个小的总结.网络爬虫是指通过一定的规则自动的从网上抓取一些信息的程序或脚本.我们知道机器学习和数据挖掘等都是从大量的数据出发,找到一些有价值有规律的东西,而爬虫则可以帮助我们解决获取数据难的问题,因此网络爬虫是我们应该掌握的一个技巧. python有很多开源工具包供我们使用,我这里使用了requests.Be

Python爬虫爬取一篇韩寒新浪博客

网上看到大神对Python爬虫爬到非常多实用的信息,认为非常厉害.突然对想学Python爬虫,尽管自己没学过Python.但在网上找了一些资料看了一下,看到爬取韩寒新浪博客的视频.共三集,第一节讲爬取一篇博客,第二节讲爬取一页博客.第三集讲爬取所有博客. 看了视频.也留下了代码. 爬虫第一步:查看网页源码: 第一篇博客的代码为蓝底的部分<a title="" target="_blank" href="http://blog.sina.com.cn/

Python爬虫爬取数据的步骤

爬虫: 网络爬虫是捜索引擎抓取系统(Baidu.Google等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 步骤: 第一步:获取网页链接 1.观察需要爬取的多网页的变化规律,基本上都是只有小部分有所变化,如:有的网页只有网址最后的数字在变化,则这种就可以通过变化数字将多个网页链接获取: 2.把获取得到的多个网页链接存入字典,充当一个临时数据库,在需要用时直接通过函数调用即可获得: 3.需要注意的是我们的爬取并不是随便什么网址都可以爬的,我们需要遵守我们的

python爬取英文名

爬取某网站名字的详细信息 部分代码 # 翻页 # 每页50条数据 pageNum = 0 if counts % 50 == 0: pageNum = counts / 50 else: pageNum = counts // 50 + 1 while page <= pageNum: page += 1 url = url + "/page/{}/".format(page) print("========第{}页============".format(p