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中string模块各属性以及函数的用法介绍
May 30 Python
Python读写txt文本文件的操作方法全解析
Jun 26 Python
详解python 字符串和日期之间转换 StringAndDate
May 04 Python
Python 查看文件的读写权限方法
Jan 23 Python
django 发送手机验证码的示例代码
Apr 25 Python
在numpy矩阵中令小于0的元素改为0的实例
Jan 26 Python
浅谈PySpark SQL 相关知识介绍
Jun 14 Python
Python获取二维数组的行列数的2种方法
Feb 11 Python
详解django使用include无法跳转的解决方法
Mar 19 Python
Python不支持 i ++ 语法的原因解析
Jul 22 Python
详解Python调用系统命令的六种方法
Jan 28 Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
Apr 14 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使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
PHP面向对象程序设计之多态性的应用示例
2018/12/19 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
2019/05/08 PHP
javascript操作文本框readOnly
2007/05/15 Javascript
jquery pagination插件实现无刷新分页代码
2009/10/13 Javascript
js的hasownproperty使用示例
2014/03/02 Javascript
jQuery中append()方法用法实例
2014/12/25 Javascript
jQuery判断checkbox选中状态
2016/05/12 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
2017/04/02 jQuery
jQuery常用选择器详解
2017/07/17 jQuery
Angularjs实现页面模板清除的方法
2018/07/20 Javascript
Vue 一键清空表单的实现方法
2020/02/07 Javascript
js实现小球在页面规定的区域运动
2020/06/16 Javascript
使用Python机器学习降低静态日志噪声
2018/09/29 Python
python可视化实现代码
2019/01/15 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
2019/10/06 Python
基于TensorBoard中graph模块图结构分析
2020/02/15 Python
Django基于客户端下载文件实现方法
2020/04/21 Python
Python使用re模块验证危险字符
2020/05/21 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
BIBLOO捷克:购买女装、男装、童装、鞋和配件
2017/01/27 全球购物
护士个人简历自荐信
2013/10/18 职场文书
大学军训感言1000字
2014/02/25 职场文书
环保倡议书
2014/04/14 职场文书
充分就业社区汇报材料
2014/05/07 职场文书
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
个人廉政承诺书
2015/04/28 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
新娘婚礼致辞
2015/07/27 职场文书
用javascript制作qq注册动态页面
2021/04/14 Javascript
Python帮你解决手机qq微信内存占用太多问题
2022/02/15 Python
MySQL中rank() over、dense_rank() over、row_number() over用法介绍
2022/03/23 MySQL