爬虫实战---正则表达式提取信息

本文介绍了如何使用正则表达式在爬虫中提取网页信息。通过re.compile()建立匹配规则,re.findall()获取所有匹配结果的列表,以及re.split()删除特定字符。还提及了运用面向对象编程,利用requests库请求服务器数据(爬取了506页),并使用open函数进行文件的读写操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 正则提取网页时,常用的函数有:
    -re.compile() #建立匹配规则
    -re.findall() #返回的符合匹配规则的所有结果的一个列表
    -re.split() #删除满足条件的字符或特殊符号

  2. 实例所采用的知识的:
    -采用面向对象的方法
    -利用requests对服务器发出请求(一共爬取506页)
    -利用正则表达式提取网页信息
    -open函数进行读写操作

import requests
import re
class Spider:
    #初始化参数
    def __init__(self,page):
        self.url='http://www.neihan8.com/article/list_5_{}.html'.format(page)
        self.headers={
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"
        }

    #下载网页信息
    def loadPage(self):
        res=requests.get(self.url,headers=self.headers)
        res.encoding=res.apparent_encoding
        html=res.text
        return html

    #解析网页--正则表达式
    def parse_html(self,html):
        pattern=re.compile(r'<div.*?class="f18 mb20">(.*?)</div>',re.S)
        item_list=pattern.findall(html)
        return item_list
    #提取信息--正则表达式
    def printOnePage(self,item_list):
        for item in item_list:
            pattern=re.compile(r'[&ldquo;&hellip;&rdquo;<b/><p></p><nr/>]')
            item=pattern.split(item)
            item=''.join(item)
            self.writeToFile(item)

    #保存信息
    def writeToFile(self,text):
        with open('duanzi.txt','a',encoding='utf-8') as f:
            f.write(text)

    def run(self):
        #1.获取网页信息
        html=self.loadPage()
        #2.提取信息
        item_list=self.parse_html(html)
        #3.保存
        self.printOnePage(item_list)
        print("保存成功")

if __name__ == '__main__':
    for page in range(1,507):
        mySpider=Spider(page)
        mySpider.run()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值