爬虫遇到Can not connect to MySQL server
时间: 2023-05-20 20:07:37 浏览: 57
当出现 "Can not connect to MySQL server" 的错误时,可能是由于以下几个方面导致的:
1. MySQL 服务没有启动,需要检查 MySQL 服务是否已经启动。
2. MySQL 端口未开放,需要检查 MySQL 配置文件中的端口号是否正确。
3. MySQL 用户账号密码有误,需要检查 MySQL 配置文件中的用户账号密码是否正确。
4. MySQL 数据库名称错误,需要检查数据库名称是否正确。
5. MySQL 服务器所在 IP 地址错误,需要检查 MySQL 服务器所在的 IP 地址是否正确。
需要根据具体情况逐一排查上述问题,并进行相应的修复操作。
相关问题
爬虫遇到304 Not Modified
爬虫遇到 304 Not Modified 状态码表示请求的资源在上次请求后没有发生变化。服务器返回这个状态码时,实际上告诉爬虫使用之前缓存的内容即可,无需重新下载该资源。
当爬虫发送一个请求时,通常会带上一个 If-Modified-Since 或者 If-None-Match 的请求头字段,用于告诉服务器上一次请求时的资源版本信息。如果服务器检测到该资源自上次请求以来没有发生修改,就会返回 304 状态码,表示资源未修改。这样,爬虫就可以使用之前缓存的内容,减少网络流量和服务器负载。
如果你的爬虫遇到了 304 Not Modified 状态码,可以根据实际需求决定是否重新下载该资源。如果你需要获取最新的内容,可以更新缓存或者重新下载;如果你只是需要验证资源是否发生变化,可以继续使用缓存的内容。
请注意,在处理 304 状态码时,要正确处理缓存机制,以避免使用过期或者不一致的数据。
爬虫豆瓣电影top250到mysql
以下是爬取豆瓣电影top250并存储到MySQL数据库的步骤:
1. 导入需要的库和模块,包括pymysql、BeautifulSoup、urllib和xlwt等。
2. 创建一个名为“douban”的数据库,并在其中创建一个名为“movies”的表,用于存储电影信息。表中包含5个字段:id、title、score、num、url,分别表示电影编号、电影名称、电影评分、评分人数和电影链接。
3. 编写爬虫代码,从豆瓣电影top250的网页中获取电影信息,并将其存储到一个列表中。
4. 遍历列表,将每个电影的信息插入到MySQL数据库中。
下面是具体的代码实现:
```python
import pymysql
from bs4 import BeautifulSoup
from urllib import request
# 连接MySQL数据库
db = pymysql.connect(host='localhost', user='root', password='123456', port=3306)
cursor = db.cursor()
# 创建douban数据库
cursor.execute('CREATE DATABASE douban DEFAULT CHARACTER SET utf8mb4')
# 选择douban数据库
cursor.execute('USE douban')
# 创建movies表
sql = '''
CREATE TABLE movies (
id INT(11) NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
score FLOAT NOT NULL,
num INT(11) NOT NULL,
url VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
'''
cursor.execute(sql)
# 爬取豆瓣电影top250的网页
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.3'}
req = request.Request(url=url, headers=headers)
response = request.urlopen(req)
html = response.read().decode('utf-8')
# 解析网页,获取电影信息
soup = BeautifulSoup(html, 'html.parser')
movies = soup.find('ol', class_='grid_view').find_all('li')
data = []
for movie in movies:
title = movie.find('span', class_='title').get_text()
score = float(movie.find('span', class_='rating_num').get_text())
num = int(movie.find('div', class_='star').find_all('span')[3].get_text()[:-3])
url = movie.find('a')['href']
data.append((title, score, num, url))
# 将电影信息插入到MySQL数据库中
for item in data:
cursor.execute('INSERT INTO movies(title, score, num, url) values(%s, %s, %s, %s)', item)
db.commit()
# 关闭数据库连接
cursor.close()
db.close()
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)