Python Selenium爬取内容并存储至MySQL数据库的实现代码
Python Selenium是一个自动化测试工具,可以模拟用户在浏览器中的操作,如点击、输入、滚动等。我们可以使用Python Selenium来爬取网页内容,并将其存储至MySQL数据库中。本文将详细讲解Python Selenium爬取内容并存储至MySQL数据库的实现代码,包括安装Selenium、连接MySQL数据库、爬取网页内容、存储至MySQL数据库等内容,并提供两个示例。
安装Selenium
在使用Python Selenium之前,我们需要先安装Selenium库。我们可以使用pip命令安装Selenium,如下所示:
pip install selenium
连接MySQL数据库
在使用Python Selenium爬取内容并存储至MySQL数据库之前,我们需要先连接MySQL数据库。我们可以使用以下代码连接MySQL数据库:
import pymysql
db = pymysql.connect(host='localhost', user='root', password='password', database='test', charset='utf8mb4')
cursor = db.cursor()
在上面的代码中,我们首先导入pymysql库,并使用pymysql.connect()方法连接到MySQL数据库。然后,我们创建了一个名为cursor的游标对象,用于执行SQL语句。
爬取网页内容
在连接MySQL数据库之后,我们可以使用Python Selenium爬取网页内容。以下是一个使用Python Selenium爬取网页内容的示例:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
element = driver.find_element_by_id('kw')
element.send_keys('Python Selenium')
element.submit()
results = driver.find_elements_by_css_selector('.result h3 a')
for result in results:
print(result.text)
在上面的代码中,我们首先导入webdriver类,并创建了一个名为driver的ChromeDriver对象。然后,我们使用driver.get()方法打开了百度首页,并使用driver.find_element_by_id()方法找到了搜索框,并使用send_keys()方法输入了搜索关键字。接着,我们使用submit()方法提交了搜索请求,并使用driver.find_elements_by_css_selector()方法找到了搜索结果中的标题,并将其打印到控制台上。
存储至MySQL数据库
在爬取网页内容之后,我们可以使用以下代码将其存储至MySQL数据库:
sql = 'INSERT INTO `articles` (`title`, `url`) VALUES (%s, %s)'
for result in results:
title = result.text
url = result.get_attribute('href')
cursor.execute(sql, (title, url))
db.commit()
在上面的代码中,我们首先定义了一个名为sql的SQL语句,用于将数据插入到MySQL数据库中。然后,我们使用for循环遍历搜索结果,并使用result.text和result.get_attribute()方法获取标题和URL。接着,我们使用cursor.execute()方法执行SQL语句,并使用db.commit()方法提交事务。
示例1:爬取百度搜索结果并存储至MySQL数据库
以下是一个爬取百度搜索结果并存储至MySQL数据库的示例:
from selenium import webdriver
import pymysql
db = pymysql.connect(host='localhost', user='root', password='password', database='test', charset='utf8mb4')
cursor = db.cursor()
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
element = driver.find_element_by_id('kw')
element.send_keys('Python Selenium')
element.submit()
results = driver.find_elements_by_css_selector('.result h3 a')
sql = 'INSERT INTO `articles` (`title`, `url`) VALUES (%s, %s)'
for result in results:
title = result.text
url = result.get_attribute('href')
cursor.execute(sql, (title, url))
db.commit()
driver.quit()
db.close()
在上面的代码中,我们首先连接到MySQL数据库,并创建了一个名为cursor的游标对象。然后,我们创建了一个名为driver的ChromeDriver对象,并使用driver.get()方法打开了百度首页。接着,我们使用driver.find_element_by_id()方法找到了搜索框,并使用send_keys()方法输入了搜索关键字。然后,我们使用submit()方法提交了搜索请求,并使用driver.find_elements_by_css_selector()方法找到了搜索结果中的标题和URL。最后,我们使用for循环遍历搜索结果,并使用cursor.execute()方法将数据插入到MySQL数据库中。
示例2:爬取豆瓣电影排行榜并存储至MySQL数据库
以下是一个爬取豆瓣电影排行榜并存储至MySQL数据库的示例:
from selenium import webdriver
import pymysql
db = pymysql.connect(host='localhost', user='root', password='password', database='test', charset='utf8mb4')
cursor = db.cursor()
driver = webdriver.Chrome()
driver.get('https://movie.douban.com/chart')
results = driver.find_elements_by_css_selector('.pl2 a')
sql = 'INSERT INTO `movies` (`title`, `url`) VALUES (%s, %s)'
for result in results:
title = result.text
url = result.get_attribute('href')
cursor.execute(sql, (title, url))
db.commit()
driver.quit()
db.close()
在上面的代码中,我们首先连接到MySQL数据库,并创建了一个名为cursor的游标对象。然后,我们创建了一个名为driver的ChromeDriver对象,并使用driver.get()方法打开了豆瓣电影排行榜页面。接着,我们使用driver.find_elements_by_css_selector()方法找到了电影标题和URL,并使用for循环遍历搜索结果,并使用cursor.execute()方法将数据插入到MySQL数据库中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python Selenium爬取内容并存储至MySQL数据库的实现代码 - Python技术站