正则表达式 爬虫,python正则表达式爬取网页

  正则表达式 爬虫,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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: