python简单爬虫简介(爬取csdn图文课程标题和作者)

本文介绍正则表达式的使用方法,包括元字符、模式和函数,并通过一个Python爬虫实例演示如何从优快云图文课程网页中提取标题和作者信息,最后将数据存入MySQL数据库。

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

1.正则表达式简介:

a.元字符:

  • . 匹配任意字符(不包括换行符)
  • ^ 匹配开始位置,多行模式下匹配每一行的开始
  • $ 匹配结束位置,多行模式下匹配每一行的结束
  • * 匹配前一个元字符0到多次
  • + 匹配前一个元字符1到多次
  • ? 匹配前一个元字符0到1次
  • {m,n} 匹配前一个元字符m到n次
  • \d 匹配一个数字,相当与[0-9]
  • \D 匹配一个非数字
  • \s 匹配任意空白字符
  • \S 匹配任意非空白字符
  • \w 匹配数字、字母、下划线中任意一个字符
  • \W 匹配非数字、字母、下划线

b.模式:

  • I 忽略大小写的匹配模式
       s = 'hello World!'
       regex = re.compile("hello world!", re.I)

     

  • S '.'可以匹配任何字符,包括换行符
  • X 冗余模式,忽略正则表达式中的空白和#号的注释

c.函数:

  • re.compile【全局匹配】
       s = '''first line
           second line
           third line'''
       regex = re.compile(".+")
       print(regex.findall(s))
       # output> ['first line', 'second line', 'third line']

     

  • re.search【扫描整个字符串并返回第一个成功的匹配】
  • re.match 【从第一个字符开始匹配】

2.爬取csdn图文课程标题和作者

    打开csdn图文课程网址:https://gitchat.youkuaiyun.com/?utm_source=csdn_toolbar

鼠标右键查看网页源代码:

看到我们需要的信息:标题和作者,如图中的红色框,根据这些源代码可以写正则表达式,提取我们需要的信息

正则表达式:

<h3 class="item_title">(.*?)</h3>.*?<p class="item_name">(.*?)</p>

(.*?)是我们需要的内容

下面是爬虫的代码:

import re
import urllib.request
import mysql.connector

#打开网页并解码
data = urllib.request.urlopen("https://gitchat.youkuaiyun.com/?utm_source=csdn_toolbar").read().decode("utf-8")

#通过python中的re模块和写的正则表达式提取信息,re.S让 . 可以匹配换行符;re.M多行匹配
result = re.findall(r'<h3 class="item_title">(.*?)</h3>.*?<p class="item_name">(.*?)</p>',data,re.S|re.M)

#插入数据库
books = []
db = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="root",
  database="cy"
)
cursor = db.cursor()
sql = "insert into book (title,author) values (%s,%s)"
for title,name in result:
    val = (title,name)
    books.append(val)
cursor.executemany(sql,books)
db.commit()

#从数据库读取信息
sql = "select * from  book"
cursor.execute(sql)
rst = cursor.fetchall()
for x in rst:
    print(x)

运行后查看数据库:

控制台输出信息:

一个简单的爬虫就完成了,本人工作主要用java,刚学python,如有不足,多多指教!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值