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中使用模块的教程
Apr 27 Python
python杀死一个线程的方法
Sep 06 Python
利用Hyperic调用Python实现进程守护
Jan 02 Python
python中numpy的矩阵、多维数组的用法
Feb 05 Python
解决python 自动安装缺少模块的问题
Oct 22 Python
python监控进程状态,记录重启时间及进程号的实例
Jul 15 Python
python 变量初始化空列表的例子
Nov 28 Python
python装饰器代替set get方法实例
Dec 19 Python
python 爬取疫情数据的源码
Feb 09 Python
python-docx文件定位读取过程(尝试替换)
Feb 13 Python
Python MySQL 日期时间格式化作为参数的操作
Mar 02 Python
如何使用pdb进行Python调试
Jun 30 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
PHP 函数学习简单小结
2010/07/08 PHP
基于PHP Web开发MVC框架的Smarty使用说明
2013/04/19 PHP
php版本的cron定时任务执行器使用实例
2014/08/19 PHP
php实现网页上一页下一页翻页过程详解
2019/06/28 PHP
JavaScript对象链式操作代码(jquery)
2010/07/04 Javascript
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
关于JavaScript对象的动态选择及遍历对象
2014/03/10 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
node中socket.io的事件使用详解
2014/12/15 Javascript
Javascript中With语句用法实例
2015/05/14 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
easyui Draggable组件实现拖动效果
2015/08/19 Javascript
让图片跳跃起来  javascript图片轮播特效
2016/02/16 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
2016/06/10 Javascript
基于jquery实现的鼠标悬停提示案例
2016/12/11 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
2018/04/08 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
nodeJS与MySQL实现分页数据以及倒序数据
2020/06/05 NodeJs
Python通过DOM和SAX方式解析XML的应用实例分享
2015/11/16 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
无法使用pip命令安装python第三方库的原因及解决方法
2018/06/12 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
2018/10/31 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
Python必须了解的35个关键词
2020/07/16 Python
全网最详细的PyCharm+Anaconda的安装过程图解
2021/01/25 Python
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
三分钟英语演讲稿
2014/04/24 职场文书
ktv好的活动方案
2014/08/15 职场文书
2014年审计工作总结
2014/11/17 职场文书
毕业生就业推荐表导师评语
2014/12/31 职场文书
民事申诉状范本
2015/05/20 职场文书
2016年寒假家长评语
2015/10/10 职场文书
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
2021/05/25 Python