第一战:爬起静态网页+数据库存储

最近开始学习爬虫技术,将自己学习的心得以及一些认识写在博客里,欢迎更多的人一块和我从零开始学习爬虫。

爬虫的基本环境和一些常用库就不多说了。先直接介绍爬取的网页和我的爬虫贴代码。

爬取网站 塔里木大学教务处

爬取目的 将网页上所有的新闻标题爬下来

网站界面

先上代码

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()

 

posted @ 2018-08-24 11:04  ykz  阅读(140)  评论(0编辑  收藏  举报