url="http://www.cctv.com.cn" html=requests. get(url) html. encoding=html. apparent_encoding data=html. text reg=r'<li><a href=" " target="_blank" rel="noopener">(.*?)</a ></li>' urls=re.findall(reg, data) print(urls) conn=sqlite3.connect("school.db") SQL='''create table information(name char(30) not null. link char(20), primary key("name"))''' conn.execute(SQL) conn.commit() for item in urls: SOL='''insert into information(name,link) values('%s', '%s')'''%(item[1],item[0]) conn.execute(SQL) conn.commit() conn.close()
时间: 2024-03-31 21:39:09 浏览: 12
这段代码的作用是从 http://www.cctv.com.cn 网站获取页面内容,并使用正则表达式提取页面中的链接。然后,它创建了一个名为 "school.db" 的 SQLite 数据库,并在其中创建了一个名为 "information" 的表。表中有两个字段,一个是 "name",类型为 char(30),一个是 "link",类型为 char(20)。然后,它将提取的链接插入到 "information" 表中。最后,它关闭了数据库连接。
但是,这段代码存在一些问题。首先,正则表达式中的空格应该去掉,否则匹配不到任何内容。其次,在插入数据时,应该使用变量 SOL,而不是 SQL。最后,在插入数据时,应该使用 conn.execute(SOL),而不是 conn.execute(SQL)。正确的代码应该是这样的:
```python
import requests
import re
import sqlite3
url = "http://www.cctv.com.cn"
html = requests.get(url)
html.encoding = html.apparent_encoding
data = html.text
reg = r'<li><a href="(.*?)" target="_blank" rel="noopener">(.*?)</a></li>'
urls = re.findall(reg, data)
print(urls)
conn = sqlite3.connect("school.db")
SQL = '''create table information(
name char(30) not null,
link char(20),
primary key("name")
)'''
conn.execute(SQL)
conn.commit()
for item in urls:
SOL = '''insert into information(name,link) values('%s', '%s')''' % (item[1], item[0])
conn.execute(SOL)
conn.commit()
conn.close()
```
注意,这段代码仅供参考,实际使用时需要根据具体情况进行调整。