爬取维基百科人物介绍,并使用pymysql存储到数据库
2017-09-23 08:39
260 查看
代码如下:
结果截图
注:
由于维基百科上我们会遇到各种各样的字符,所以最好通过下面四条语句让数据库支持unicode:
from urllib.request import urlopen from bs4 import BeautifulSoup import re import datetime import random import pymysql.cursors # Connect to the database connection = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='数据库密码', db='scraping', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) cur = connection.cursor() random.seed(datetime.datetime.now()) def store(title,content): cur.execute("INSERT INTO pages(title,content)values(\"%s\",\"%s\")",(title,content)) cur.connection.commit() def getLinks(articleUrl): html = urlopen("http://en.wikipedia.org"+articleUrl) bsObj = BeautifulSoup(html,"html.parser") title = bsObj.find("h1").get_text() print(title) content = bsObj.find("div",{"id":"mw-content-text"}).find("p").get_text() print(content) store(title,content) return bsObj.find("div",{"id":"bodyContent"}).findAll("a",href=re.compile("^(/wiki/)((?!:).)*$")) links = getLinks("/wiki/Kevin_Bacon") try: while len(links) > 0 : newArticle = links[random.randint(0, len(links)-1)].attrs["href"] #print(newArticle) links = getLinks(newArticle) finally: cur.close() connection.close()
结果截图
注:
由于维基百科上我们会遇到各种各样的字符,所以最好通过下面四条语句让数据库支持unicode:
alter database scraping character set = utf8mb4 collate = utf8mb4_unicode_ci; alter table pages convert to character set = utf8mb4 collate = utf8mb4_unicode_ci; alter table pages change title title varchar(200) character set = utf8mb4 collate = utf8mb4_unicode_ci; alter table pages change content content varchar(10000) character set = utf8mb4 collate = utf8mb4_unicode_ci;
相关文章推荐
- scrapyl使用pymysql操作数据库存储数据(存入多个表)
- noSQL数据库相关软件介绍(大数据存储时候,必须使用)
- noSQL数据库相关软件介绍(大数据存储时候,必须使用)
- 使用Tomcat-5.5.20配置数据库连接池详细介绍
- 国际化使用UTF-8造成数据库MSSQL Server 2000/2005存储乱码的分析
- 一个查看MSSQLServer数据库空间使用情况的存储过程 SpaceUsed
- 层次结构数据的数据库存储和使用
- 使用Tomcat-5.5.20配置数据库连接池详细介绍
- 存储过程介绍及asp存储过程的使用
- asp.net 数据库存储过程使用 c#
- 使用系统表根据存储过程名字生成ADO.NET数据库访问代码
- 国际化使用UTF-8造成数据库MSSQL Server 2000/2005存储乱码的分析
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- 使用Tomcat-5.5.20配置数据库连接池详细介绍
- 如何使用 Visual Studio .NET 工具创建数据库对象和 Transact-SQL 存储过程。
- 存储过程介绍及asp存储过程的使用
- 关于datagrid的使用以及动态修改,以及使用存储过程的介绍
- 如何使用Sybase ASE数据库的扩展存储过程?
- c#使用数据库存储过程的基本方法
- 存储过程介绍及asp存储过程的使用