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 文件与目录操作
Dec 24 Python
Python文件及目录操作实例详解
Jun 04 Python
python3+PyQt5实现文档打印功能
Apr 24 Python
使用python验证代理ip是否可用的实现方法
Jul 25 Python
python 删除字符串中连续多个空格并保留一个的方法
Dec 22 Python
ERLANG和PYTHON互通实现过程详解
Jul 05 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
Mar 06 Python
Django中的session用法详解
Mar 09 Python
Python 如何调试程序崩溃错误
Aug 03 Python
Python在线和离线安装第三方库的方法
Oct 31 Python
Python爬虫分析微博热搜关键词的实现代码
Feb 22 Python
图神经网络GNN算法
May 11 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
第十四节 命名空间 [14]
2006/10/09 PHP
PHP 数字左侧自动补0
2008/03/31 PHP
PHP连接Access数据库的方法小结
2013/06/20 PHP
使用php验证复选框有效性的示例
2013/11/13 PHP
php将字符串转化成date存入数据库的两种方式
2014/04/28 PHP
php快递单号查询接口使用示例
2014/05/05 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
2017/08/15 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
ASP中进行HTML数据及JS数据编码函数
2009/11/11 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
node.js实现逐行读取文件内容的代码
2014/06/27 Javascript
js获取微信版本号的方法
2015/05/12 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
2015/08/18 Javascript
基于Bootstrap实现tab标签切换效果
2020/04/15 Javascript
Javascript发送AJAX请求实例代码
2016/08/21 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
运用jQuery写的验证表单(实例讲解)
2017/07/06 jQuery
微信小程序学习笔记之本地数据缓存功能详解
2019/03/29 Javascript
jQuery实现图片下载代码
2019/07/18 jQuery
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
解决Python 遍历字典时删除元素报异常的问题
2016/09/11 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
2017/02/16 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
python图形开发GUI库pyqt5的基本使用方法详解
2020/02/14 Python
Python3利用openpyxl读写Excel文件的方法实例
2021/02/03 Python
纯CSS3实现8组超炫酷鼠标滑过图片动画
2016/03/16 HTML / CSS
作为网站管理者应当如何防范XSS
2014/08/16 面试题
药学专业大专生的自我评价
2013/12/12 职场文书
个人优缺点自我评价
2014/01/27 职场文书
2014村务公开实施方案
2014/02/25 职场文书
银行行长竞聘演讲稿
2014/04/23 职场文书
领导批评与自我批评范文
2014/10/16 职场文书
小学生作文之《压岁钱的烦恼》
2019/09/27 职场文书
Opencv实现二维直方图的计算及绘制
2021/07/21 Python
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技