本文实例讲述了Python3使用正则表达式爬取内涵段子的方法。分享给大家供大家参考,具体如下:
似乎正则在爬虫中用的不是很广泛,但是也是基本功需要我们去掌握。
先将内涵段子网页爬取下来,之后利用正则进行匹配,匹配完成后将匹配的段子写入文本文档内。代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# -*- coding:utf-8 -*-
from urllib import request as urllib2
import re
# 利用正则表达式爬取内涵段子
url = r 'http://www.neihanpa.com/article/list_5_{}.html'
headers = {
'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0' ,
}
file_name = '内涵段子.txt'
for page in range ( 2 ):
# 2表示页数,可以自行调整
fullurl = url. format ( str (page + 1 ))
request = urllib2.Request(url = fullurl, headers = headers)
response = urllib2.urlopen(request)
html = response.read().decode( 'gbk' )
# re.S 如果没有re.S 则是只匹配一行有没有符合规则的字符串,如果没有则下一行重新匹配
# 如果加上re.S 则是将所有的字符串作为一个整体进行匹配
pattern = re. compile (r '<div\sclass="f18 mb20">(.*?)</div>' ,re.S)
duanzis = pattern.findall(html)
for duanzi in duanzis:
duanzi = duanzi.replace( '<p>' ,' ').replace(' < / p> ',' ').replace(' <br / > ',' \n ').replace(' “ ',' ').replace(' &rdquo ',' ').replace(' … ',' ')
try :
# 将爬取的段子写入文件
file = open (file_name, 'a' ,encoding = 'utf-8' )
file .write( '\n' .join(duanzi.split()))
file .close()
except OSError as e:
print (e)
|
运行后生成如下图所示文件:
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://blog.csdn.net/wangbowj123/article/details/79149655