python 爬取古诗文存入mysql数据库的方法
使用正则提取数据,请求库requests,看代码,在存入数据库时,报错ERROR1054(42S22):Unknowncolumn‘title'in‘fieldlist'。原来是我写sql有问题,sql=“insertintopoem(title,author,content,create_time)values({},{},{},{})”.format(title,author,content,crate_time)
应该写成sql=“insertintopoem(title,author,content,create_time)values('{}','{}','{}','{}')”.format(title,author,content,crate_time)。
把插入的值放入引号中。
importdatetime importre importpymysql importrequests url="https://www.gushiwen.org/" headers={ 'User-Agent':"Mozilla/5.0(Macintosh;U;IntelMacOSX10_6_8;en-us)AppleWebKit/534.50(KHTML,likeGecko)Version/5.1Safari/534.50"} classSpiderpoem(object): conn=pymysql.Connect(host="localhost",port=3306,user="root",password='mysql',database='poem_data', charset="utf8") cs1=conn.cursor() defget_requests(self,url,headers=None): """发送请求""" resp=requests.get(url,headers=headers) ifresp.status_code==200: #print(resp.request.headers) returnresp.text returnNone defget_parse(self,response): """解析网页""" re_data={ "title":r'.*?(.*?).*?', "author":r'.*?class="source">.*?
', "content":r'(.*?).*? (.*?).*? (.*?)' } 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() foriteminpoems_list: ite=re.sub(r'<.*?>|\s',"",item) contents.append(ite.strip()) forvalueinzip(titles,authors,contents): title,author,content=value author="".join([author[0],'.',author[1]]) poem={ "title":title, "author":author, "content":content } yieldpoem defreg_con(self,params,response): """正则匹配""" ifnotresponse: return"请求错误" param=re.compile(params,re.DOTALL)#re.DOTALL匹配换行等价于re.S result=re.findall(param,response) returnresult @classmethod defsave_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="insertintopoem(title,author,content,create_time)values('{}','{}','{}','{}')".format(title,author, content, crate_time) count=cls.cs1.execute(sql) print(count) cls.conn.commit() defmain(self): resp=self.get_requests(url,headers) foritinself.get_parse(resp): self.save_data(it) self.cs1.close() self.conn.close() if__name__=='__main__': Spiderpoem().main()
总结
以上所述是小编给大家介绍的python爬取古诗文存入mysql数据库的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。