Python爬虫实现使用beautifulSoup4爬取名言网功能案例


Posted in Python onSeptember 15, 2019

本文实例讲述了Python爬虫实现使用beautifulSoup4爬取名言网功能。分享给大家供大家参考,具体如下:

爬取名言网top10标签对应的名言,并存储到mysql中,字段(名言,作者,标签)

#! /usr/bin/python3
# -*- coding:utf-8 -*-
from urllib.request import urlopen as open
from bs4 import BeautifulSoup
import re
import pymysql
def find_top_ten(url):
  response = open(url)
  bs = BeautifulSoup(response,'html.parser')
  tags = bs.select('span.tag-item a')
  top_ten_href = [tag.get('href') for tag in tags]
  top_ten_tag = [tag.text for tag in tags]
  # print(top_ten_href)
  # print(top_ten_tag)
  return top_ten_href
def insert_into_mysql(records):
  con = pymysql.connect(host='localhost',user='root',password='root',database='quotes',charset='utf8',port=3306)
  cursor = con.cursor()
  sql = "insert into quotes(content,author,tags) values(%s,%s,%s)"
  for record in records:
    cursor.execute(sql, record)
  con.commit()
  cursor.close()
  con.close()
# http://quotes.toscrape.com/tag/love/
#要获取对应标签中所有的名言 所以这里要考虑分页的情况
#经过在网页上查看知道分页查询的url
#http://quotes.toscrape.com/tag/love/page/1/
#判断到那一页没有数据 div.container div.row [1]
def find_link_content(link):
  page = 1
  while True:
    new_link = "http://quotes.toscrape.com" + link + "page/"
    # print(new_link)
    new_link = new_link + str(page)
    print(new_link)
    sub_bs = open(new_link)
    sub_bs = BeautifulSoup(sub_bs,'html.parser')
    quotes = sub_bs.select('div.row div.col-md-8 span.text')
    # 如果没有数据就退出
    if len(quotes) == 0:
      break
    #名言
    quotes = [quote.text.strip('“”') for quote in quotes]
    #作者
    authors = sub_bs.select('small.author')
    authors = [author.text for author in authors]
    # 标签
    tags_list = sub_bs.select('meta.keywords')
    tags_list = [tags.get('content') for tags in tags_list]
    # print(authors)
    # print(quotes)
    #print(tags_list)
    record_list = []
    for i in range(len(quotes)):
      tags = tags_list[i]
      tags = tags.replace(',',',')
      print(tags)
      record = [quotes[i],authors[i],tags]
      record_list.append(record)
    insert_into_mysql(record_list)
    page += 1
#
def main():
  url = "http://quotes.toscrape.com/"
  parent_link = find_top_ten(url)
  for link in parent_link:
    print(link)
    find_link_content(link)
if __name__ == '__main__':
  main()

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python 字符串split的用法分享
Mar 23 Python
编写简单的Python程序来判断文本的语种
Apr 07 Python
linux下python抓屏实现方法
May 22 Python
Python中生成器和迭代器的区别详解
Feb 10 Python
python删除文本中行数标签的方法
May 31 Python
linux安装Python3.4.2的操作方法
Sep 28 Python
python实现两个字典合并,两个list合并
Dec 02 Python
python matplotlib中的subplot函数使用详解
Jan 19 Python
Python中用pyinstaller打包时的图标问题及解决方法
Feb 17 Python
Python如何将模块打包并发布
Aug 30 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
Oct 20 Python
浅谈python数据类型及其操作
May 25 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 #Python
Python实现的爬取豆瓣电影信息功能案例
Sep 15 #Python
Python数据库小程序源代码
Sep 15 #Python
python中树与树的表示知识点总结
Sep 14 #Python
python树的同构学习笔记
Sep 14 #Python
python图形绘制奥运五环实例讲解
Sep 14 #Python
python列表插入append(), extend(), insert()用法详解
Sep 14 #Python
You might like
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
PHP与MYSQL中UTF8 中文排序示例代码
2014/10/23 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
2020/05/27 PHP
JS日历 推荐
2006/12/03 Javascript
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
js CSS操作方法集合
2008/10/31 Javascript
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
Three.js学习之几何形状
2016/08/01 Javascript
JavaScript动态数量的文件上传控件
2016/11/18 Javascript
使用Vue.js创建一个时间跟踪的单页应用
2016/11/28 Javascript
关于angular js_$watch监控属性和对象详解
2017/04/24 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
2019/08/20 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
2019/09/16 Javascript
JavaScript如何判断input数据类型
2020/02/06 Javascript
微信小程序开发之获取用户手机号码(php接口解密)
2020/05/17 Javascript
vue使用nprogress加载路由进度条的方法
2020/06/04 Javascript
Python读取环境变量的方法和自定义类分享
2014/11/22 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
python 有效的括号的实现代码示例
2019/11/11 Python
python如何运行js语句
2020/09/09 Python
java字符串格式化输出实例讲解
2021/01/06 Python
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
电气个人求职信范文
2014/02/04 职场文书
《望洞庭》教学反思
2014/02/16 职场文书
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
规划编制实施方案
2014/03/15 职场文书
公司节能减排倡议书
2014/05/14 职场文书
集体生日活动方案
2014/08/18 职场文书
解除聘用合同证明书范本
2014/09/11 职场文书
新党章的学习心得体会
2014/11/07 职场文书
2014年打非治违工作总结
2014/11/13 职场文书
保送生自荐信
2015/03/06 职场文书
python 实现mysql自动增删分区的方法
2021/04/01 Python
Java中的继承、多态以及封装
2022/04/11 Java/Android