python爬虫爬取豆瓣top250,并用sqlite分别存储在本地数据库
时间: 2023-12-06 20:01:12 浏览: 35
Python爬虫是一种网络爬虫技术,用于自动化地从互联网上获取数据。使用Python编写爬虫程序可以方便地获取豆瓣电影的TOP250信息,并将其存储在本地数据库中,这样可以方便地对数据进行管理和分析。
首先,我们需要使用Python的requests库发送HTTP请求,获取豆瓣TOP250页面的HTML源代码。然后,可以使用BeautifulSoup库对HTML进行解析,提取出电影的名称、评分、导演等信息。
接下来,我们可以使用Python的sqlite3库连接到本地的SQLite数据库,并创建一个表格来存储电影信息。可以使用SQL语句创建一个名为movies的表格,包含电影名称、评分和导演等字段。
然后,我们可以使用Python的循环结构遍历从豆瓣获取的电影信息列表,并将每个电影的名称、评分和导演插入到数据库表格中。可以使用INSERT INTO语句将数据插入到movies表格中。
最后,记得在爬虫程序结束后关闭数据库连接,以释放资源。
总结起来,使用Python的爬虫技术结合sqlite数据库可以非常方便地爬取豆瓣TOP250电影信息,并将其存储在本地数据库中,以便进一步的处理和分析。这样可以方便地随时获取最新的电影信息,而无需每次都进行网络爬取,提高了数据获取效率。
相关问题
python爬取人民网标题和链接并用sqlite保存在数据库中
好的,以下是Python爬取人民网标题和链接并用sqlite保存在数据库中的代码示例:
```python
import requests
from bs4 import BeautifulSoup
import sqlite3
# 请求人民网国内新闻页面
url = 'http://world.people.com.cn/GB/1015/index1.html'
r = requests.get(url)
# 解析HTML页面
soup = BeautifulSoup(r.content, 'html.parser')
# 获取新闻标题和链接
news_list = soup.find_all('div', class_='title')
title_list = [n.find('a').get_text() for n in news_list]
link_list = [n.find('a').get('href') for n in news_list]
# 将数据存入数据库
conn = sqlite3.connect('news.db')
cursor = conn.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS news (title TEXT, link TEXT)')
for i in range(len(title_list)):
sql = "INSERT INTO news (title, link) VALUES (?, ?)"
val = (title_list[i], link_list[i])
cursor.execute(sql, val)
conn.commit()
conn.close()
```
在这个示例中,我们首先使用requests库请求人民网国内新闻页面,并用BeautifulSoup库解析HTML页面。我们使用find_all()方法查找所有的新闻标题和链接,并将它们分别存储在title_list和link_list中。然后,我们使用sqlite3库将这些数据存入news.db数据库中。我们使用cursor()方法创建一个游标对象,并使用execute()方法执行SQL语句。如果news表不存在,则使用CREATE TABLE语句创建该表。然后,我们使用INSERT INTO语句将数据插入到news表中。最后,我们使用commit()方法提交事务并关闭数据库连接。
并用sqlite保存在本地数据库
好的,下面是一个将爬取到的电影信息保存到本地SQLite数据库的示例代码:
```python
import requests
from bs4 import BeautifulSoup
import sqlite3
url = 'https://movie.douban.com/top250'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299'
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
movies = soup.select('.item')
# 连接到本地SQLite数据库
conn = sqlite3.connect('movies.db')
# 创建表
conn.execute('''CREATE TABLE IF NOT EXISTS movie_top250 (
id INTEGER PRIMARY KEY,
title TEXT,
rating REAL,
year INTEGER,
director TEXT
)''')
# 插入数据
for movie in movies:
title = movie.select('.title')[0].text.strip()
rating = movie.select('.rating_num')[0].text.strip()
year = movie.select('.inq')[0].text.strip()[1:-1] if movie.select('.inq') else 'N/A'
info = movie.select('.bd p')[0].text.strip().split('\n')
director = info[0][4:]
conn.execute("INSERT INTO movie_top250 (title, rating, year, director) VALUES (?, ?, ?, ?)", (title, rating, year, director))
# 提交更改并关闭连接
conn.commit()
conn.close()
```
这段代码会将爬取到的电影信息保存到本地SQLite数据库中,如果数据库不存在,则会创建一个新的数据库。在这个示例中,我们创建了一个名为`movie_top250`的表,包含电影名称、评分、上映年份和导演等信息。你可以根据自己的需求修改表的结构。