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 相关文章推荐
使用setup.py安装python包和卸载python包的方法
Nov 27 Python
python元组操作实例解析
Sep 23 Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
May 05 Python
Python端口扫描简单程序
Nov 10 Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
Jul 06 Python
python3如何将docx转换成pdf文件
Mar 23 Python
Python爬取个人微信朋友信息操作示例
Aug 03 Python
python3 反射的四种基本方法解析
Aug 26 Python
如何给Python代码进行加密
Jan 10 Python
Python实现子类调用父类的初始化实例
Mar 12 Python
浅谈python锁与死锁问题
Aug 14 Python
python爬取某网站原图作为壁纸
Jun 02 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函数utf8转gb2312编码
2006/12/21 PHP
CodeIgniter php mvc框架 中国网站
2008/05/26 PHP
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
2011/12/05 PHP
php cli 小技巧
2013/06/03 PHP
php similar_text()函数的定义和用法
2016/05/12 PHP
利用PHP如何写APP接口详解
2016/08/23 PHP
ThinkPHP中图片按比例切割的代码实例
2019/03/08 PHP
基于php伪静态的实现方法解析
2020/07/31 PHP
xml分页+ajax请求数据源+dom取结果实例代码
2008/10/31 Javascript
javascript 命名空间以提高代码重用性
2008/11/13 Javascript
ExtJs使用总结(非常详细)
2012/03/22 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
js onclick事件传参讲解
2013/11/06 Javascript
js和jquery如何获取图片真实的宽度和高度
2014/09/28 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
JavaScript制作简易的微信打飞机
2015/03/31 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
Javascript缓存API
2016/06/14 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
基于JS实现checkbox全选功能实例代码
2016/10/31 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
2017/04/27 Javascript
JavaScript中Object值合并方法详解
2017/12/22 Javascript
小程序视频列表中视频的播放与停止的示例代码
2018/07/20 Javascript
使用webpack搭建vue环境的教程详解
2019/12/31 Javascript
使用python装饰器验证配置文件示例
2014/02/24 Python
python django集成cas验证系统
2014/07/14 Python
Python的类实例属性访问规则探讨
2015/01/30 Python
Python数据分析之双色球中蓝红球分析统计示例
2018/02/03 Python
Python3爬虫之urllib携带cookie爬取网页的方法
2018/12/28 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
实例讲解使用HTML5 Canvas绘制阴影效果的方法
2016/03/25 HTML / CSS
弘扬职业精神演讲稿
2014/03/20 职场文书
副董事长岗位职责
2014/04/02 职场文书
关于热爱祖国的演讲稿
2014/05/04 职场文书
python双向链表实例详解
2022/05/25 Python
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers