python 爬取古诗文存入mysql数据库的方法
Python  /  管理员 发布于 7年前   205
使用正则提取数据,请求库requests,看代码,在存入数据库时,报错ERROR 1054 (42S22): Unknown column ‘title' in ‘field list'。原来是我写sql 有问题,sql = “insert into poem(title,author,content,create_time) values({},{},{},{})”.format(title, author,content,crate_time)
应该写成sql = “insert into poem(title,author,content,create_time) values('{}','{}','{}','{}')”.format(title, author,content,crate_time)
。
把插入的值放入引号中。
import datetimeimport reimport pymysqlimport requestsurl = "https://www.gushiwen.org/"headers = { 'User-Agent': "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50"}class Spiderpoem(object): conn = pymysql.Connect(host="localhost", port=3306, user="root", password='mysql', database='poem_data', charset="utf8") cs1 = conn.cursor() def get_requests(self, url, headers=None): """发送请求""" resp = requests.get(url, headers=headers) if resp.status_code == 200: # print(resp.request.headers) return resp.text return None def get_parse(self, response): """解析网页""" re_data = { "title": r'<div\sclass="sons">.*?<b>(.*?)</b>.*?</div>', "author": r'<p>.*?class="source">.*?<a.*?>(.*?)</a>.*?<a.*?>(.*?)</a>.*?</p>', "content": r'<div\sclass="contson".*?>(.*?)</div>' } titles = self.reg_con(re_data["title"], response) authors = self.reg_con(re_data["author"], response) poems_list = self.reg_con(re_data["content"], response) contents = list() for item in poems_list: ite = re.sub(r'<.*?>|\s', "", item) contents.append(ite.strip()) for value in zip(titles, authors, contents): title, author, content = value author = "".join([author[0], '.', author[1]]) poem = { "title": title, "author": author, "content": content } yield poem def reg_con(self, params, response): """正则匹配""" if not response: return "请求错误" param = re.compile(params, re.DOTALL) # re.DOTALL 匹配换行等价于re.S result = re.findall(param, response) return result @classmethod def save_data(cls, poem): title = poem.get("title") author = poem.get("author") content = poem.get("content") crate_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") sql = "insert into poem(title,author,content,create_time) values('{}','{}','{}','{}')".format(title, author, content, crate_time) count = cls.cs1.execute(sql) print(count) cls.conn.commit() def main(self): resp = self.get_requests(url, headers) for it in self.get_parse(resp): self.save_data(it) self.cs1.close() self.conn.close()if __name__ == '__main__': Spiderpoem().main()
总结
以上所述是小编给大家介绍的python 爬取古诗文存入mysql数据库的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号