第一战:爬起静态网页+数据库存储
最近开始学习爬虫技术,将自己学习的心得以及一些认识写在博客里,欢迎更多的人一块和我从零开始学习爬虫。
爬虫的基本环境和一些常用库就不多说了。先直接介绍爬取的网页和我的爬虫贴代码。
爬取网站 塔里木大学教务处
爬取目的 将网页上所有的新闻标题爬下来
网站界面
先上代码
import requests import re link = "http://jwc.taru.edu.cn/" headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36", "Host":"jwc.taru.edu.cn" } r = requests.get(link,headers= headers) r.encoding='utf-8' list = re.findall('a\shref="info(/.*)"\sclass=".*"\stitle="(.*?)"\starget="_blank">',r.text)#a\shref="info/&&&&/.*"\sclass=".*"\stitle="(.*?)"\starget="_blank &&&&符号限制爬什么地方 for eachone in list: url = "http://jwc.taru.edu.cn/info"+eachone[0] title = eachone[1] print(url, title)
这是最基本的操作,一个link,一个header,是网页的基本信息,用于模仿浏览器访问的重点。
因为这个网站估计是做的时候很烂,编码很诡异,我用r.encoding='uft-8'将获取的文本内容转换成utf-8模式。
再用正则表达式在获取的网页代码中寻找自己所需要的代码段,在输出的时候,正则表达式中的括号部分则为保存下来的东西。关于如何找到相对应的正则表达式,这个就需要自己慢慢去翻了。
在该代码中url为爬下来的标题点进去所有的连接地址,title为标题。
接下来就是要连接数据库了,我这里使用的是mysql,别的不多说,看代码吧。
#塔里木大学教务处网站爬取新闻列表&保存至Mysql中 import requests import re import MySQLdb conn = MySQLdb.connect(host='localhost', user='root', passwd='1', db='tlm', charset="utf8") cur = conn.cursor() cur.execute("DELETE FROM urls;") #清楚urls表的数据 cur.execute("truncate table urls;") #将id从0开始 link = "http://jwc.taru.edu.cn/" headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36", "Host":"jwc.taru.edu.cn" } r = requests.get(link,headers= headers) r.encoding='utf-8' list = re.findall('a\shref="info(/.*)"\sclass=".*"\stitle="(.*?)"\starget="_blank">',r.text)#a\shref="info/&&&&/.*"\sclass=".*"\stitle="(.*?)"\starget="_blank &&&&符号限制爬什么地方 for eachone in list: url = "http://jwc.taru.edu.cn/info"+eachone[0] title = eachone[1] print(title) cur.execute("INSERT INTO urls (url, title) VALUES (%s, %s)", (url, title)) cur.close() conn.commit() conn.close()