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 相关文章推荐
Windows下使Python2.x版本的解释器与3.x共存的方法
Oct 25 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
Dec 25 Python
python中判断文件编码的chardet(实例讲解)
Dec 21 Python
python opencv之SURF算法示例
Feb 24 Python
使用Python实现跳一跳自动跳跃功能
Jul 10 Python
Django框架之DRF 基于mixins来封装的视图详解
Jul 23 Python
python tkinter控件布局项目实例
Nov 04 Python
python 实现多维数组转向量
Nov 30 Python
python实现飞机大战游戏(pygame版)
Oct 26 Python
Python callable内置函数原理解析
Mar 05 Python
浅谈django 重载str 方法
May 19 Python
python实现简单贪吃蛇游戏
Sep 29 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数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
2011/11/02 PHP
介绍一些PHP判断变量的函数
2012/04/24 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
2014/11/28 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
2017/05/02 PHP
mailto的使用技巧分享
2012/12/21 Javascript
jQuery实现自动滚动到页面顶端的方法
2015/05/22 Javascript
js 判断一组日期是否是连续的简单实例
2016/07/11 Javascript
Javascript中apply、call、bind的巧妙使用
2016/08/18 Javascript
js a标签点击事件
2017/03/30 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
vue中eventbus被多次触发以及踩过的坑
2017/12/02 Javascript
JavaScript类的继承操作实例总结
2018/12/20 Javascript
vue车牌号校验和银行校验实战
2019/01/23 Javascript
vue-cli3+typescript新建一个项目的思路分析
2019/08/06 Javascript
p5.js临摹动态图形的方法
2019/10/23 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
2020/08/06 Javascript
python实现代码行数统计示例分享
2014/02/10 Python
用Python编写一个简单的Lisp解释器的教程
2015/04/03 Python
python 上下文管理器使用方法小结
2017/10/10 Python
Python txt文件加入字典并查询的方法
2019/01/15 Python
Django 路由层URLconf的实现
2019/12/30 Python
python实现简单贪吃蛇游戏
2020/09/29 Python
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
德国高性价比网上药店:medpex
2017/07/09 全球购物
财务总监管理职责范文
2014/03/09 职场文书
植树节活动总结
2014/04/30 职场文书
社保委托书怎么写
2014/08/02 职场文书
公司人事专员岗位职责
2014/08/11 职场文书
沈阳故宫导游词
2015/01/31 职场文书
公司放假通知怎么写
2015/04/15 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
2017新年晚会开幕词
2016/03/03 职场文书
详解前端任务构建利器Gulp.js使用指南
2021/04/30 Javascript