正则表达式 爬虫,python正则表达式爬取网页
首先,我们来看看爬虫之前对基础知识点的总结。
一. match()方法:
此方法将从字符串的开头开始匹配(您也可以指定起始位置)。如果开始时没有找到,它将立即返回None。如果它匹配一个结果,它将不再匹配。
我们可以指定起始位置的索引为3,范围为3-10,那么python将从第4个字符‘1’开始匹配,并且只匹配一个结果。
Group()获取一个或多个分组的字符串,当指定多个字符串时,这些字符串将作为元组返回。group(0)表示整个匹配的字符串,当没有填入参数时,group()返回group(0)。
1进口re
2
3 pattern=re.pile (r \ d) #多次匹配该数字
4 m=pattern.match(one123two456 )
5打印m
6打印m.group()
七
8 #无
9 #.attribute error:“NoneType”对象没有属性“group”
10
11
2pattern=re.pile (r \ d) #多次匹配数字
13m=pattern . match( one 123 two 456 )。3, 10)
14打印m
15打印m.group()
16
17 # _sre0x00000000026FAE68处的SRE _匹配对象
18 #123 II。search()方法:
Search方法类似于match,只是match()方法只检测它是否在一个字符串的开头匹配,search()扫描整个字符串寻找匹配。同样,搜索方法只匹配一次。
1进口re
2
3 pattern=re.compile(r\d )
4m=pattern . search( one 123 two 456 )
5打印m.group()
六
7 #123三。findall()方法:
搜索字符串,并以列表形式返回所有匹配的字符串。
1进口re
2
3 pattern=re.compile(r\d )
4m=pattern . find all( one 123 two 456 )
5打印m
六
7 #[123 , 456]四。sub()方法:
用于替换每个匹配的字符串,并返回被替换的字符串。
1进口re
2
3 pattern=re.compile(r\d )
4 m=pattern.sub(abc , one123two456 )
5打印m
六
7 #oneabctwo456五、练习:爬段内涵。
1 #-*-编码:utf-8-*-
2
3项进口申请
4进口re
五
6级蜘蛛:
七
8 def __init__(self):
9 self.page=1
10
11 def getPage(self,Page):
12网址=http://www.neihan8.com/article/list_5_{}。“html”。格式(页面)
13响应=requests.get(url)
1 contents=response . content . decode( GBK )#检查网页源代码,默认代码为charset=gb2312。
15返回内容
16
17 def getContent(self):
18 contents=self . get page(self . page)
19 pattern=re.compile( h4。*?a href。*? html (。*?)/a .*?(.*?)/div ,re。s)
20个结果=pattern.findall(内容)
21内容=[]
22对于结果中的项目:
23 title=re sub( b /b ,,item[0])
24 content=re sub(r p /p br/ \ w; img alt。* div text-align:center;, ,项目[1])
25 content=re sub(r div h1。*垂直对齐:基线; /h1 ,,内容)
26 content=re sub(r div 答案, ,内容)
27 content=re sub(r span ,,content)
28 contents . append([标题,内容])
29返回内容
30
31 def save_Data(自身):
32 file=open(duanzi.txt , w )
33 x=1
34 y=1
范围(0,507)内的self.page为35:
36 contents=self.getContent()
3Print U”正在第%d页上写入数据.%(自我.第1页)
38对于目录中的项目:
39 file.write(str(x) . 项目[0])
40 file.write(\n )
41 file.write(项目[1])
42 file . write(=============================================================================\ n \ n )
43如果item==contents[-1]:
4 file . write(U * * * * * * * * * \ n \ n 中的页尾 str(y )
45 y=1
46 x=1
4Print U 所有页面都已加载
48
49定义启动(自我):
50 self.save_Data()
51
五十二个
53蜘蛛=蜘蛛()
5Spider.start()基本可以得到段落的标题和内容,但是替换标签非常困难,因为标签后面有内涵条的段落比较复杂。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。