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 getopt模块处理命令行选项实例
May 13 Python
Python __setattr__、 __getattr__、 __delattr__、__call__用法示例
Mar 06 Python
Python中datetime常用时间处理方法
Jun 15 Python
Python中在脚本中引用其他文件函数的实现方法
Jun 23 Python
python实现画五角星和螺旋线的示例
Jan 20 Python
python basemap 画出经纬度并标定的实例
Jul 09 Python
Python scrapy增量爬取实例及实现过程解析
Dec 24 Python
pyenv虚拟环境管理python多版本和软件库的方法
Dec 26 Python
python实现微信打飞机游戏
Mar 24 Python
Python pexpect模块及shell脚本except原理解析
Aug 03 Python
python 使用csv模块读写csv格式文件的示例
Dec 02 Python
pandas按照列的值排序(某一列或者多列)
Dec 13 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/04/29 PHP
定义php常量的详解
2013/06/09 PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
2016/03/21 PHP
utf8的编码算法 转载
2006/12/27 Javascript
JQuery模板插件 jquery.tmpl 动态ajax扩展
2011/11/10 Javascript
使用js写的一个简易的投票
2013/11/27 Javascript
判断浏览器的内核及版本号方法汇总
2015/01/05 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
jQuery基于ajax实现星星评论代码
2015/08/07 Javascript
js钢琴按钮波浪式图片排列效果代码分享
2015/08/26 Javascript
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
基于jquery实现简单的手风琴特效
2015/11/24 Javascript
javascript返回顶部的按钮实现方法
2016/01/09 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
2016/06/07 Javascript
bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法
2017/03/08 Javascript
AngularJS实现的回到顶部指令功能实例
2017/05/17 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
2019/12/23 jQuery
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
Python元字符的用法实例解析
2018/01/17 Python
python使用thrift教程的方法示例
2019/03/21 Python
OpenCV搞定腾讯滑块验证码的实现代码
2019/05/18 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
python-序列解包(对可迭代元素的快速取值方法)
2019/08/24 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
英国领先的家庭时尚品牌:Peacocks
2018/01/11 全球购物
Hotels.com泰国:酒店预订网站
2019/11/20 全球购物
神路信息Java面试题目
2013/03/31 面试题
企业党员公开承诺书
2014/03/26 职场文书
公证委托书模板
2014/04/03 职场文书
保证书格式范文
2014/04/28 职场文书
产品质量保证书
2014/04/29 职场文书
希特勒的演讲稿
2014/05/23 职场文书
教师廉洁自律承诺书
2014/05/26 职场文书
2015年超市工作总结范文
2015/05/26 职场文书
利用python进行数据加载
2021/06/20 Python