对着爬虫网页HTML学习Python正则表达式re

使用Python中的正则表达式处理html文件 例如,正则表达式,如:r" (\w+) \1 仅当与组(\w+)完全匹配的字符串再次出现时才匹配 backref\1出现的位置。在下面的代码中,这些匹配对象被访问(通过for循环),因此可以打印组1。将代码添加到STARTER脚本为这些模式编译RE(将它们分配给有意义的变量名称),并将这些RE应用于文件的每一行,打印出找到的匹配项。一个HTML文件,并返回一个纯文本文件,所有HTML标记都已从中删除出来这里我们不打算这样做,而是考虑一个更简单的例子,即删除我们在输入数据文件的任何行中找到的HTML标记。 阅读详情

1.正则表达式初探

用比较经典的例子,查找一段文本中的手机号码。比如对于文本“我现在用的电话是188-8888-8888,之前那个186-6666-6666已经不用了”,我们想获取其中的手机号码信息,用正则表达式可以这么做呢?

正则表达式,简称为 regex,是文本模式的描述方法。例如, \d 是一个正则表达式,表示一位数字字符,即任何一位 0 到 9 的数字 。Python 使用正则表达式\d\d\d-\d\d\d\d-\d\d\d\d,来匹配3 个数字、一个短横线、4 个数字、一个短横线、4 个数字。所有其他字符串都不能匹配\d\d\d-\d\d\d\d-\d\d\d\d 正则表达式。

在一个表达式后加上花括号包围的 3({3}),就是说,“匹配这个模式 3 次”。所以较短的正则表达式\d{3}-\d{4}-\d{4},也可以匹配正确的手机号码格式。

引入正则表达式库 re ,该库是python自带的哈。

In [1]: import re
   ...: # 创建一个regex模式对象
   ...: phoneNum = re.compile(r'\d\d\d-\d\d\d\d-\d\d\d\d')
   ...: # 匹配regex对象
   ...: mo = phoneNum.search('我现在用的电话是188-8888-8888,之前那个186-6666-6666已经不用了')

In [2]: mo.group()
Out[2]: '188-8888-8888'

其实,以下是等价的

# 创建一个regex模式对象,pattern指待匹配的正则表达式
phoneNum = re.compile(pattern)
# 匹配regex对象,string指代匹配的文本内容
mo = phoneNum.search(string)

等价于

mo = phoneNum.search(pattern, string)

如果需要多次使用这个正则表达式的话,使用 re.compile() 和保存这个正则对象以便复用,可以让程序更加高效。

不过,我们发现其实在待匹配的文本内容中出现了2个手机号码,但是 re.search() 只返回了第一个匹配成功的文本。如何可以获取全部匹配成功的项呢,咱们 可以使用re.findall()来进行操作,其返回的结果是由所有匹配组成的列表 。

In [3]: re.findall(r'\d{3}-\d{4}-\d{4}', '我现在用的电话是188-8888-8888,之前那个186-6666-6666已经不用了')
Out[3]: ['188-8888-8888', '186-6666-6666']

2.用正则表达式匹配更多模式

在实际解析网页HTML文本的时候,我们可能需要取匹配中某个部分分组文本、或者需要选择性匹配多个文本、又或者对某些字符或者分组需要匹配0/1次或者多次等等。

以下是待解析的某待租房间信息

info= '''
             <h5 class="title sign"><a href="//www.ziroom.com/x/712447913.html" target="_blank" style="line-height: 0.9em;">合租·DBC加州小镇C区4居室-南卧</a></h5>
             <div class="desc">
               <div>23.3㎡ | 5/15层</div>
               <div class="location">
                                      小区距高楼金站步行约178米                                </div>
             </div>
                             <div class="price ">
              <span class="rmb">¥</span>
                                        <span class="num">188</span>
                               <span class="unit">/天</span>
             </div>
                                             <div class="tag">
                                              <span>可短租</span>
                                                             <span>离地铁近</span>
                                                             <span>米苏4.0</span>
                                           </div>
                                  
'''

对于这种文本,由于存在很多空白字符类如换行、空格等等,我需要先用re.sub()进行简单的清洗。

info = re.sub(r'\s','',info) # \s 匹配任意空白字符

2.1.利用括号()进行分组

比如,我需要匹配子字符中的房间租金信息,因租金为数字但是还有别的一些信息也是数字(如房间大小等),因此我们在匹配的时候需要代入前后一些字符做唯一匹配,但是实际只需要对应的数字文本内容,因此需要进行分组。

<spanclass="num">188</span>

比如以上,我们想要获得价格188,可以使用 (\d{3}) 进行匹配。

注意:这里是的匹配模式是4位数字的精确匹配,在实际的操作中价格可能存在不确定的位置甚至带有小数,我们需要用到更复杂的匹配模式,具体见后续讲解。

In [4]: re.findall(r'<spanclass="num">(\d{3})</span>', info)
Out[4]: ['188']

2.2.利用管道|匹配多个分组

以示例的info文本,在爬虫过程中其价格有时候类型是天或者月,我们匹配的可能就是诸多表达式中的一个,此时可以使用 | 进行操作。正则表达式r“天|月”即可匹配 天 或者 月。

<spanclass="unit">/天</span>
# 或者
<spanclass="unit">/月</span>

我们采用正则表达式 r“天|月” 可实现匹配。

In [5]: re.findall(r'<spanclass="unit">/(月|天)</span>', info)
Out[5]: ['天']

In [6]: s = '<spanclass="unit">/月</span>'
In [7]: re.findall(r'<spanclass="unit">/(月|天)</span>', s)
Out[7]: ['月']

2.3.用问号?实现可选匹配

对于房间的面积,有的可能是整数有的可能是小数,因此小数点及小数点后的数字其实是可选项,为了更好的匹配这个面积文本,我们需要用到问号?。 字符?表示它前面的分组在这个模式中是可选的 。

<div>23.3㎡|5/15层</div>
# 或者
<div>23㎡|5/15层</div>

我们可以用 r'(\d{2}.?\d?)'来进行匹配,如果为了在整个html里找且怕存在重复,可以用r'(\d{2}.?\d?)|5/15层'。这里需要注意我们在 | 前面加了 转义字符 \,区别于 | 本身,否则可能无法得出正确结果。

In [8]: re.findall(r'<div>(\d{2}\.?\d?)㎡\|5/15层</div>',info)
Out[8]: ['23.3']

In [9]: re.findall(r'<div>(\d{2}\.?\d?)㎡\|5/15层</div>','<div>23㎡|5/15层</div>')
Out[9]: ['23']

2.4.用星号*实现0次或多次

对于楼层信息来说,我们要获取其楼层和楼高,有的可能有楼层信息但是有的可能没有,楼层和楼高可能是个位数或者十位数。这种情况下,我们可以使用星号进行匹配。 字符*表示它前面的分组在这个模式中是出现0次或者多次。

<div>23.3㎡|5/15层</div>
# 或者
<div>23㎡|9层</div>

由于楼高是一定存在的,而楼层不一定存在,因为我们可以用r'(\d*)/*(\d+)'来进行匹配,注意字符+代表至少一次,详见后续说明。

In [10]: re.findall(r'<div>\d{2}\.?\d?㎡\|(\d*)/*(\d+)层</div>', info)
Out[10]: [('5', '15')]

In [11]: re.findall(r'<div>\d{2}\.?\d?㎡\|(\d*)/*(\d+)层</div>', '<div>23㎡|9层</div>')
Out[11]: [('', '9')]

2.5.用加号+实现1次或多次

我们在2.4中其实看到了 字符 + 的使用场景,其代表的就是 它前面的分组在这个模式中是出现1次或者多次 。

<spanclass="num">188</span>
# 或者
<spanclass="num">1888</span>

我们回到 2.1.中 匹配租金的案例,其实对于租金来说除了3位数之外,租金金额其实是一个大于0的值,也就是至少出现1次数字,因此我们可以用 r'(\d+)' 来匹配。

In [12]: re.findall(r'<spanclass="num">(\d+)</span>', info)
Out[12]: ['188']

In [13]: re.findall(r'<spanclass="num">(\d+)</span>', '<spanclass="num">1888</span>')
Out[13]: ['1888']

2.6.用花括号{}匹配特定次数

再以2.3.中的房间面积为例,我们认为房间面积不可能超过3位数、最低1位数 为正常值。如果想要一个分组重复特定次数,就在正则表达式中该分组的后面,跟上花括号包围的数字。例如,正则表达式(Ha){3}将匹配字符串'HaHaHa',但不会匹配'HaHa',因为后者只重复了(Ha)分组两次。

除了一个数字,还可以指定一个范围,即在花括号中写下一个最小值、一个逗号和一个最大值。例如,正则表达式(Ha){3,5}将匹配'HaHaHa'、 'HaHaHaHa'和'HaHaHaHaHa'。

也可以不写花括号中的第一个或第二个数字, 不限定最小值或最大值。例如,(Ha){3,}将匹配 3 次或更多次实例, (Ha){,5}将匹配 0 到 5 次实例。

不过,在使用过程中一定要慎重,同样的分组在不同的匹配模式可能带来不同的结果。

In [14]: re.findall(r'(\d{2,3})㎡','<div>3456㎡|5/15层</div>')
Out[14]: ['456']

In [15]: re.findall(r'<div>(\d{2,3})㎡','<div>3456㎡|5/15层</div>')
Out[15]: []

3.贪心和非贪心匹配

Python 的正则表达式默认是“贪心” 的,这表示在有二义的情况下,它们会尽可能匹配最长的字符串。

在表达式后面加上符号?,即为非贪心匹配。

In [16]: greedyHaRegex = re.compile(r'(Ha){3,5}')

In [17]: mo1 = greedyHaRegex.search('HaHaHaHaHa')

In [18]: mo1.group()
Out[18]: 'HaHaHaHaHa'

In [19]: greedyHaRegex = re.compile(r'(Ha){3,5}?')

In [20]: mo2 = greedyHaRegex.search('HaHaHaHaHa')

In [21]: mo2.group()
Out[21]: 'HaHaHa'

In [22]: re.findall(r'(Ha){3,5}?','HaHaHaHaHa')
Out[22]: ['Ha']

In [23]: re.findall(r'(Ha){3,5}','HaHaHaHaHa')
Out[23]: ['Ha']

In [24]: re.findall(r'((Ha){3,5})','HaHaHaHaHa')
Out[24]: [('HaHaHaHaHa', 'Ha')]

In [25]: re.findall(r'((Ha){3,5}?)','HaHaHaHaHa')
Out[25]: [('HaHaHa', 'Ha')]

4.字符类型

模式描述
^匹配字符串的开头
$匹配字符串的末尾。
.匹配任意字符,除了换行符,当.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。
[...]用来表示一组字符,单独列出:[amk] 匹配 'a','m'或'k'
[^...]不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。
*匹配0个或多个的表达式。
+匹配1个或多个的表达式。
?匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式
{ n}精确匹配 n 个前面表达式。例如, o{2} 不能匹配 "Bob" 中的 "o",但是能匹配 "food" 中的两个 o。
{ n,}匹配 n 个前面表达式。例如, o{2,} 不能匹配"Bob"中的"o",但能匹配 "foooood"中的所有 o。"o{1,}" 等价于 "o+"。"o{0,}" 则等价于 "o*"。
{ n, m}匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式
a|b匹配a或b
()对正则表达式分组并记住匹配的文本
(?imx)正则表达式包含三种可选标志:i, m, 或 x 。只影响括号中的区域。
(?-imx)正则表达式关闭 i, m, 或 x 可选标志。只影响括号中的区域。
(?: )类似 (...), 但是不表示一个组
(?imx: )在括号中使用i, m, 或 x 可选标志
(?-imx: )在括号中不使用i, m, 或 x 可选标志
(?#...)注释.
(?= )前向肯定界定符。如果所含正则表达式,以 ... 表示,在当前位置成功匹配时成功,否则失败。但一旦所含表达式已经尝试,匹配引擎根本没有提高;模式的剩余部分还要尝试界定符的右边。
(?! )前向否定界定符。与肯定界定符相反;当所含表达式不能在字符串当前位置匹配时成功
(?> )匹配的独立模式,省去回溯。
\w匹配字母数字及下划线
\W匹配非字母数字及下划线
\s匹配任意空白字符,等价于 [ \t\n\r\f]。
\S匹配任意非空字符
\d匹配任意数字,等价于 [0-9].
\D匹配任意非数字
\A匹配字符串开始
\Z匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串。
\z匹配字符串结束
\G匹配最后匹配完成的位置。
\b匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
\B匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
\n, \t,匹配一个换行符,匹配一个制表符
\1...\9匹配第n个分组的内容。
\10匹配第n个分组的内容,如果它经匹配。否则指的是八进制字符码的表达式。
实例描述
[Pp]ython匹配 "Python" 或 "python"
rub[ye]匹配 "ruby" 或 "rube"
[aeiou]匹配中括号内的任意一个字母
[0-9]匹配任何数字。类似于 [0123456789]
[a-z]匹配任何小写字母
[A-Z]匹配任何大写字母
[a-zA-Z0-9]匹配任何字母及数字
[^aeiou]除了aeiou字母以外的所有字符
[^0-9]匹配除了数字外的字符

正则匹配模式表

标志含义
re.S(DOTALL)使.匹配包括换行在内的所有字符
re.I(IGNORECASE)使匹配对大小写不敏感
re.L(LOCALE)做本地化识别(locale-aware)匹配,法语等
re.M(MULTILINE)多行匹配,影响^和$
re.X(VERBOSE)该标志通过给予更灵活的格式以便将正则表达式写得更易于理解
re.U根据Unicode字符集解析字符,这个标志影响\w,\W,\b,\B

5.split()函数

根据正则匹配分割字符串,返回分割后的一个列表 split(pattern, string, maxsplit=0, flags=0)

pattern:正则模型

string :要匹配的字符串

maxsplit:指定分割个数

flags  :匹配模式

当我们获取了全部房源信息后,需要对一些信息进行二次解析,比如房屋信息的解析。

In [26]: # 房屋信息解析
     ...: s1 = '合租·李村东里3居室-北卧'
     ...: s2 = '合租·强佑·府学上院4居室-北卧'
     ...: s3 = '整租·铁二区1室1厅-北'
     ...: s4 = '整租·厂甸11号院1室1厅-东'
     ...: s5 = '整租·牛街182室1厅-西'

In [27]: re.split(r'(\S*?)·(.*)(\d居*室.*)-(.*)',s1)
Out[27]: ['', '合租', '李村东里', '3居室', '北卧', '']

In [28]: re.split(r'(\S*?)·(.*)(\d居*室.*)-(.*)',s2)
Out[28]: ['', '合租', '强佑·府学上院', '4居室', '北卧', '']

In [29]: re.split(r'(\S*?)·(.*)(\d居*室.*)-(.*)',s3)
Out[29]: ['', '整租', '铁二区', '1室1厅', '北', '']

In [30]: re.split(r'(\S*?)·(.*)(\d居*室.*)-(.*)',s4)
Out[30]: ['', '整租', '厂甸11号院', '1室1厅', '东', '']

In [31]: re.split(r'(\S*?)·(.*)(\d居*室.*)-(.*)',s5)
Out[31]: ['', '整租', '牛街18', '2室1厅', '西', '']

大家可以尝试更多种正则表达式匹配规则,比如能把前后的空字符串去掉的等等。

如果我们要解析出 房间面积、楼层和楼高信息,观测数据发现存在以下3种情况,大家觉得怎么写正则表达式能实现呢?

# 房间信息解析
# 我们在数据处理中发现存在异常数据(楼层如 7层 或 -1/5层)
s1 = '87.26㎡|11/29层'
s2 = '87㎡|7层'
s3 = '8.6㎡|-1/5层'


本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理

想要获取更多Python学习资料可以加
QQ:2955637827私聊
或加Q群630390733
大家一起来学习讨论吧!

Information Fusion投稿避坑指南:从初稿到返修的完整流程解析(附模板下载) 本文详细解析了向Information Fusion投稿的全流程,从初稿准备到返修策略,涵盖了22个关键细节。特别强调了投稿前的隐形门槛、LaTeX模板的字体陷阱、图表规范要求以及返修回复的进阶技巧,帮助研究者避免常见错误,提升稿件接受率。附有实用模板下载,助力学术写作效率提升。 阅读详情

相关推荐

从驱动编译到数据传输:RK3588与FPGA的PCIe通信实战解析

本文详细解析了RK3588与FPGA通过PCIe通信的实战过程,涵盖驱动编译、数据传输及性能优化等关键步骤。通过XDMA驱动实现高效DMA传输,适用于视频处理、数据采集等高性能场景,帮助开发者快速掌握嵌入式系统中的PCIe通信技术。

weixin_29214691的博客 528

对着爬虫网页HTML学习Python正则表达式

文章目录1.正则表达式初探2.用正则表达式匹配更多模式2.1.利用括号()进行分组2.2.利用管道|匹配多个分组2.3.用问号?实现可选匹配2.4.用星号*实现0次或多次2.5.用加号+实现1次或多次2.6.用花括号{}匹配特定次数3.贪心和非贪心匹配4.字符类型5.split()函数 1.正则表达式初探 用比较经典的例子,查找一段文本中的手机号码。比如对于文本“我现在用的电话是188-8888-8888,之前那个186-6666-6666已经不用了”,我们想获取其中的手机号码信息,用正则表达式可以这么做呢

可以叫我才哥 448

蓝桥杯单片机学习13——NE555方波发生器&频率测量

NE555详解、引脚图介绍、原理图及工作原理讲解、方波产生的原理、定时器测量频率的原理及使用方法、代码实现

weixin_67907028的博客 1万+

[python] 常用正则表达式爬取网页信息及分析HTML标签总结

这篇文章主要是介绍Python爬取网页信息时,经常使用的正则表达式及方法。它是一篇总结性文章,实用性比较大,主要解决自己遇到的爬虫问题,也希望对你有所帮助~ 当然如果会Selenium基于自动化测试爬虫、BeautifulSoup分析网页DOM节点,这就更方便了,但本文更多的是介绍基于正则的底层爬取分析。 涉及内容如下: 常用正则表达式爬取网页信息及HTML分析总结 1.获取<t...

杨秀璋的专栏 12万+

LPC546xx USB接口VBUS阈值设计:从原理到实践,解决冷启动与可靠性问题

在嵌入式USB接口设计中,VBUS信号不仅是电源线,更是设备连接检测与电源管理的核心。其电压阈值直接决定了USB物理层(PHY)能否正确识别主机并建立有效会话。理解VBUS的会话有效电压(Votg_sess_valid)与PHY有效电压(VBUS_valid)等关键参数,是确保接口稳定性的基础。这些参数影响着设备枚举的成功率、通信稳定性以及长期可靠性。在工程实践中,尤其是对于集成PHY的微控制器如NPC LPC546xx系列,VBUS的连接方案(直接连接或通过稳压器)需要根据设备供电模式(自供电/总线供电)

weixin_30915275的博客 402

利用mininet模拟SDN架构并进行DDoS攻击与防御模拟(Ryu+mininet+sflow+postman)

1、知识概述 (1)软件定义网络: (2)mininet: Mininet是一个强大的网络仿真平台,通过这个平台,我们可以很方便的模拟真实环境中的网络操作与架构。特别是SDN,在真实网络中进行相关的网络实验有一定难度,自然需要一个仿真平台可以学习这种新型的网络架构,而Mininet就应运而生,承担了这个光荣而艰巨的使命。Mininet自带交换机(switchs)、主机(hosts)、控制器(controllers),同时,在mininet上可以安装OpenvSwitch、多种控制器(NOX\POX

北风 1万+

python html 解析与正则表达式

#正则表达式 1.正则表达式的特殊字符 ^/$开始/结束   \w/\W匹配字母,数字,下划线/相反 \s/\S匹配空白字符/相反 \d/D匹配数字/相反 \b/\B匹配单词开始和结束的位置/相反   .匹配任意字符 [m]匹配单个字符串  [m1m2...n]匹配多个字符串 [m-n]匹配m-n区间的数字,字母   [^m]匹配除m以外的字符串 ()对正则表达式进行分组 2.正则表达式中的常用限...

医然 4346

新系统申请软件著作权详细操作说明

今年八月底版权中心系统升级,新系统相对好用一些,至少不用再拿IE访问了,但是多了一项实名认证。下面介绍新系统的操作流程。 目录注册、登录和实名认证注册登录实名认证软件登记申请申请表填写鉴别材料身份证明文件权利归属证明文件其他材料提交材料变更登记 注册、登录和实名认证 首先访问版权中心系统:https://register.ccopyright.com.cn/login.html,如果老系统有账号直接登录即可,没有的话需要注册。 注册 点击注册按钮进入注册。 根据实际情况选择个人或单位,每个个人或单位只能在

Programming Talk 1万+

爬虫就是处理html文本正则,R语言爬虫系列5|正则表达式与字符串处理函数

原标题:R语言爬虫系列5|正则表达式与字符串处理函数作者:鲁伟,热爱数据,坚信数据技术和代码改变世界。R语言和Python的忠实拥趸,为成为一名未来的数据科学家而奋斗终生。个人公众号:数据科学家养成记 (微信ID:louwill12)第三篇戳:R语言爬虫系列3|HTTP协议无论是R中的RCurl组件还是Python的BeautifulSoup库,对网页HTML完成下载解析之后我们从这些看似杂乱无章...

weixin_39880150的博客 276

SAP FICO 内部往来对账功能开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

SAP FICO 内部往来对账功能开发说明书(包括开发源代码、测试样例、FS)

我好像病了的博客 1226

【24届秋招总结】24届数字IC秋招给学弟学妹们的99条建议(标题党)

针对2023年找实习、秋招、谈薪资等方面的个人经验进行总结,希望对后续同学们找工作有所帮助

qq_42135020的博客 4464

用python爬取网页_怎样用python爬取网页

匿名用户1级2018-03-23 回答#coding=utf-8importurllibimportre#百度贴吧网址:https://tieba.baidu.com/index.html#根据URL获取网页HTML内容defgetHtmlContent(url):page=urllib.urlopen(url)returnpage.read()#从HTML中解析出所有jpg的...

weixin_40003046的博客 118

华为昇腾开发——多模型资源管理(C++)

在使用Ascend ACL(Ascend Computing Language)的ACLLite库进行多模型推理时,合理的资源管理至关重要。

如果想成为中心,那么就到中心去吧。 577

ziheng -学习匹配术-正则表达式

import requests import re wang_zhi = "http://www.2345.com/inner/jzw/" yuan_dai_ma = requests.get(wang_zhi) # print(yuan_dai_ma.text) # print(type(yuan_dai_ma.text)) # 数据类型:字典{} 列表[] 元组() 布尔表达式True/Fal...

少儿编程侯老师的博客 220

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

python爬虫笔记第二章

python爬虫笔记(第二章)01数据解析概述02正则表达式元字符量词贪婪匹配和惰性匹配 01数据解析概述 re解析 bs4解析 xpath解析 02正则表达式 正则的语法: 使⽤元字符进⾏排列组合⽤来匹配字符串 在线测试正则表达式https://tool.oschina.net/regex/ 元字符 . 匹配除换⾏符以外的任意字符 \w 匹配字⺟或数字或下划线 \s 匹配任意的空⽩符 \d 匹配数字 \n 匹配⼀个换⾏符 \t 匹配⼀个制表符 ^ 匹配字符

weixin_46501211的博客 1074

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

爬虫入门学习

文本段落换行加粗链接名有序列表无序列表

?的博客 1564

如何入门Python爬虫?

然后再接下来学习 scrapy,来进行更进一步的爬取,大体的思路也就是这些,上手其实是和容易的,并且爬一些简单的站也是非常容易地,但是真正要爬一些有东西的网站还是很难得,另外就是没事看看别人的代码,对自己有很大的帮助,别人写的狗屁不通,你就要学习一下如何写的不像他那样,别人写的精益求精,你就要学习一下如何写的这么好,别人好的思路你学习,别人查的方法你反思,不断学习,勇攀高峰!之后学习一下 re 正则,这个对爬虫来说真的很实用,比如说我的那篇文章,爬取知乎盐选,就是利用正则抓取下一页的跳转链接的。

yul364102的博客 237

Python爬虫-暨大考研报录比

关于学习爬虫这个事情,我和它的缘分起源于某位讨厌的老师的期末项目作业,那是个为了开拓学生自学能力的好老师嗯。emmmmm于是在掉了三天头发后,我还要被迫来写博客,感觉也是一种奇妙的体验,算是达成了“人生第一次写博客”成就吧,nice。 那么现在我来share一下为了python爬虫我这三天是如何学习的吧头发是如何掉的吧:( 关于python爬虫,首先要了解的当然是python了,python...

LicalKi的博客 2895

很简单的爬虫——爬取糗事百科部分页面内容

最简单的爬虫实现。

think_ycx的专栏 919

用Python爬虫获取自己感兴趣的博客文章

来源:  CDA数据分析师在优快云上有很多精彩的技术博客文章,我们可以把它爬取下来,保存在本地磁盘,可以很方便以后阅读和学习,现在我们就用python编写一段爬虫代码,来实现这个目的。我们想要做的事情:自动读取博客文章,记录标题,把心仪的文章保存到个人电脑硬盘里供以后学习参考。过程大体分为以下几步:1. 找到爬取的目标网址;2. 分析网页,找到自已想要保存的信息,这里我们主要保存是博客的文章内容

大数据杂谈 878

Python写爬虫1

# -*- coding: UTF-8 -*- import requests import re import sys reload(sys) sys.setdefaultencoding("gb18030") type = sys.getfilesystemencoding() headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win...

luoxiping1的专栏 162

第一个python程序,小爬虫--抓取网页图片

1,我的第一个python程序   刚开始学python,照着视频写了第一个小程序 1,简历一个文件夹,存放你的pathon程序 [root@chen01 usr]# mkdir python 2,编写一个python程序 [root@chen01 usr]#  vi getjpg.py 开始写代码: #!/usr/bin/python import re

OY_palada 1436

[python每日一练]--0009:找出html里的链接

题目链接:https://github.com/Show-Me-the-Code/show-me-the-code 我的github链接:https://github.com/wjsaya/python_spider_learn/tree/master/python_daily 个人博客地址:https://wjsaya.github.io 第 0009 题:一个HTML文件,找出

saya_wj 528

开发记录_自学Python写爬虫程序爬取csdn个人博客信息

每天刷开csdn的博客,看到一整个页面,其实对我而言,我只想看看访问量有没有上涨而已... 于是萌生了一个想法: 想写一个爬虫程序把csdn博客上边的访问量和评论数都爬下来。 打算通过网络各种搜集资料,自学写Python代码。 这次自学的历程,也打算及时的整理下来,发布在博客里。 /******************这是程序员风格的分割线******************/ 2013.11.3_开工 据说Python并不难,看过了python的代码之后也觉得确实, 代码很清爽..

weixin_48320524的博客 445

Python爬虫(小练习)

近日,在浏览伯乐在线(http://blog.jobbole.com/29281/)的时候碰到一些很不错的资源:25本免费的Python电子书 如下图: 其中,每本都是以名字+超链接的方式,于是激起了我写个小程序保存这些资源的欲望,顺便也能练习一些不太熟练的小爬虫 : ) 。 好了,我们开始吧! 先展示一下成果给大家看嗯: 如图   每本书都很有条理的保存在本地文档中,结果还是挺满意...

weixin_34256074的博客 192

Python爬虫学习记录(一)

Python爬虫学习记录(一)如何插入一段漂亮的代码片 如何插入一段漂亮的代码片 去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片. // An highlighted block var foo = 'bar'; headers={} us=UserAgent() useragent = us.random header...

weixin_45872150的博客 287
上一篇: Python手把手教程之用户输入input函数
下一篇: 详解函数和函数的使用
pythonputao
博客等级 码龄6年 60粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值