使用python的requests和lxml库来实现爬虫功能

使用requerts和lxml来连接到网页并且获取到网页内容,requests用来连接网页。lxml用来解析格式。然后把需要的获取的东西 比如软科排名里的 大学名称、logo、英文名称、描述爬取下来并且放在自己本地的MySql数据库里

先使用MySql建立好数据库,我用的5.7版本


下面是我成功添加到数据库的内容

下面是我查询的内容

下面是主函数。

import Sprider as sr
from MySQlDBHelper import DBConnect
if __name__ == "__main__":url = "https://www.shanghairanking.cn/rankings/bcur/202111"header = {"User - Agent":"",  #使用自己浏览器的User -agent 自己填'Referer':"https://www.shanghairanking.cn/"}#下面的代码用来连接网页并且获取网页内容content = sr.getContent(url,header)tul = sr.getInfo(content)conn = DBConnect()'''往数据库里添加网页里夫区的内容'''sql = "insert into tb_univ(title,logo,enmae,type) values (%s,%s,%s,%s)" #预处理sql 能防sql注入for j in range(0,len(tul[0])): #大学名称.logo.英文名称.描述title = tul[0][j]logo  = tul[1][j]ename = tul[2][j]type  = tul[3][j]print(title,logo,ename,type)tul1 =(title,logo,ename,type)conn.executeCUD(sql,tul1)'''查询数据库里添加好的网页内容 '''sql_query = "select * from tb_univ limit %s,%s"print("*" * 40)rs = conn.executeQuery(sql_query,(2*5,5))for index,item in enumerate(rs):print(index,"-",item[1])print("*"*40)conn.close()

上面是主函数里面的内容。我们把爬虫的代码和连接数据库的任务放在其他的file里

下面是把爬虫代码单独写成方法

import requests
from lxml import etree
def getContent(url,header):req = requests.get(url=url,headers=header)html_content = req.content.decode('utf-8')return html_contentdef getInfo(con):base_path = '//*[@id="content-box"]/div[2]/table/tbody/tr'title_flag = '/td[2]/div/div[2]/div[1]/div/div/a/text()'logo_flag = '/td[2]/div/div[1]/img/@src'english_name = '/td[2]/div/div[2]/div[2]/div/div/a/text()'evg_type = '/td[2]/div/div[2]/p/text()'ht = etree.HTML(con)title_info = ht.xpath(base_path[1]+title_flag)logo_info = ht.xpath(base_path[1]+logo_flag)english_name = ht.xpath(base_path[1]+english_name)evg_type = ht.xpath(base_path[1]+evg_type)return title_info,logo_info,english_name,evg_type

下面是连接数据库的工具类,封装成类。方便通用,使用了面向对象的方法

import pymysql as pm
'''
通用的数据库操作工具类
'''
class DBConnect():def __init__(self):#连接数据库try:self.conn = pm.connect(host="localhost",port=3306,user="root",password="root")#里面的参数是我自己的MySql数据库的参数。自己填自己的self.conn.select_db("univ_db") #这是我自己创建的数据库。print("数据库连接成功")except Exception as e:print("数据库连接失败")def executeQuery(self,sql,args):self.curr = self.conn.cursor()self.curr.execute(sql,args)rs = self.curr.fetchall()return rsdef executeCUD(self,sql,args):try:self.curr = self.conn.cursor();i = self.curr.execute(sql,args)self.conn.commit()print("影响"+i+"条")return iexcept Exception as e:print("操作数据库")def close(self):try:self.curr.close()self.conn.close()print("关闭数据库成功")except Exception as e:print("关闭数据库失败",e)# dbm = DBConnect()
# sql = "insert into tb_univ(title,enmae,type) values (%s,%s,%s)"
# dbm.executeCUD(sql,('北京大学','PeKing','985/211'))#用来测试插入功能是否实现。

既然把上面的连接数据库的方法封装成了工具类。那我们实现别的功能需要用到数据库的时候也就可以直接使用那个工具类了。比如,我下面的代码是用来实现往数据库添加随机10个英文字母和数字

import random
import stringfrom MySQlDBHelper import DBConnect
def addInfo(sql,args):db = DBConnect()i = db.executeCUD(sql,args)db.close()return i
def query(sql,args):db = DBConnect()rs = db.executeQuery(sql,args)db.close()return rsif __name__ =="__main__": #下面被我注释的代码是我已经插入成功了。第一次的话把注释给解除掉# sql = "insert into tb_user(uname,age) values(%s,%s)"# for i in range(100):#     str1 = list(string.ascii_letters)#     random.shuffle(str1)#     temp_str = "".join(str1)#     args =(temp_str[0:10],random.randint(1,100))#     i = addInfo(sql,args)#     print("数据插入成功:",i)queryStr = "select * from tb_user"rs = query(queryStr, ())items = [repr(index) + "-" + item[1] + ":" + repr(item[2]) for index, item in enumerate(rs)]for i in items:print(i)

使用python中的requests爬取软科大学排名并存储在本地MySql数据库相关推荐

  1. 使用bs4爬取软科大排名并保存在数据库

    1.使用bs4爬取软科大排名,首先我们要使用到三个库文件,requests库.bs4和pymysql: 2.获取网页 #获取网页 def getHTMLText(url):#获取URL信息,输出内容t ...

  2. Python爬虫练习:爬取软科世界大学学术排名

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于云边镇 ,作者花花 前言 软科世界大学学术排名(ShanghaiRa ...

  3. python中data.find_all爬取网站为空列表_Python网络爬虫之Scrapy 框架-分布式【第二十九节】...

    1. 介绍scrapy-redis框架 scrapy-redis 一个三方的基于redis的分布式爬虫框架,配合scrapy使用,让爬虫具有了分布式爬取的功能. github地址: https://g ...

  4. python中data.find_all爬取网站为空列表_利用Golang快速爬取盗版网站的整套音频

    01 前言 最近因为 Zigma 帮我写了个推广 Catcher 小程序软文的原因,答应了他帮他爬了一个盗版音频网站的整套 <李淼谈奇案> . 在制作爬虫脚本的过程中,也是遇到了一些有趣的 ...

  5. Python网络爬虫:爬取CSDN热搜数据 并保存到本地文件中

    hello,大家好,我是wangzirui32,今天我们来学习如何爬取CSDN热搜数据,并保存到Excel表格中. 开始学习吧! 学习目录 1. 数据包抓取 2. 编写代码 1. 数据包抓取 打开CS ...

  6. Python爬虫实战之一 - 基于Requests爬取拉勾网招聘信息,并保存至本地csv文件

    Python爬虫实战之二 - 基于Requests抓取拉勾网招聘信息 ---------------readme--------------- 简介:本人产品汪一枚,Python自学数月,对于小白,本 ...

  7. 使用python中的Selenium爬取百度文库word文章

    参考文章:Python3网络爬虫(九):使用Selenium爬取百度文库word文章,链接为: https://blog.csdn.net/c406495762/article/details/723 ...

  8. python中scrapy可以爬取多少数据_python scrapy框架爬取某站博人传评论数据

    1. B站博人传评论数据爬取简介 今天想了半天不知道抓啥,去B站看跳舞的小姐姐,忽然看到了评论,那就抓取一下B站的评论数据,视频动画那么多,也不知道抓取哪个,选了一个博人传跟火影相关的,抓取看看.网址 ...

  9. python中scrapy可以爬取多少数据_python中scrapy框架爬取携程景点数据

    ------------------------------- [版权申明:本文系作者原创,转载请注明出处] 文章出处:https://blog.csdn.net/sdksdk0/article/de ...

最新文章

  1. 南京工业大学python考试题库_程序设计语言(Python程序设计)答案
  2. Java中的回调函数学习-深入浅出
  3. 【WebAPI No.5】Core WebAPI中的自定义格式化
  4. 浅谈创业性公司的发展
  5. 我不知道风是在哪一个方向吹
  6. 【Leetcode】大神总结的所有TopK问题模板(基于快速排序)
  7. mysql修改校对集_MySQL 图文详细教程之校对集问题
  8. 策略模式java 用例_java策略模式简单用例
  9. sonarqube 启动不了,异常提示:远程主机强迫关闭了一个现有的连接
  10. 好用的对象转xml、xml转对象工具类-支持集合嵌套转换(Java实现)
  11. Facebook开源看图问答模型Pythia:拿下VQA比赛冠军就靠它
  12. 1041. 考试座位号(15)-PAT乙级真题
  13. 强行进入远程计算机,远程桌面强制连接命令
  14. HEX、RGB颜色表
  15. 批量替换 Word 文档前几页
  16. robots.txt存放的位置robots.txt文件的作用及写法 (搜索引擎)
  17. 中国消费品领域知名的调查研究咨询公司信息
  18. AltiumDesigner元器件搜索中英文对照
  19. “AI安全”风起云涌,拿下A轮融资的瑞莱智慧如何与群雄共舞?
  20. ScrollView水平滑动条选中条目的居中显示

热门文章

  1. ProxmoxVE折腾记录(二)--版本升级
  2. Linux网卡配置文件 参数详解
  3. 在 MarkDown 中添加表格(例如:在 CSDN 中添加表格)
  4. 计算机课怎样制作ppt 课件ppt,计算机多媒体课件制作.ppt
  5. Error contacting service. It is probably not running.
  6. cocos2d-x传智播客_10年和超过520集播客-科技是一场马拉松,而不是短跑
  7. 2021年中国海上风电行业发展现状分析,双碳循环下行业飞速发展「图」
  8. ThinkPad E545连WiFi教程(系统:ubuntu-20.04.3-live-server,无线网卡:BCM34142)
  9. 计算机浮点数的格式,单精度与双精度的区别
  10. Sitewhere物联网云平台安装