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中使用装饰器和元编程实现结构体类实例
Jan 28 Python
查看Python安装路径以及安装包路径小技巧
Apr 28 Python
Pycharm远程调试openstack的方法
Nov 21 Python
Django学习教程之静态文件的调用详解
May 08 Python
Python利用splinter实现浏览器自动化操作方法
May 11 Python
python elasticsearch环境搭建详解
Sep 02 Python
python中的数组赋值与拷贝的区别详解
Nov 26 Python
python入门之基础语法学习笔记
Feb 08 Python
删除pycharm鼠标右键快捷键打开项目的操作
Jan 16 Python
彻底解决pip下载pytorch慢的问题方法
Mar 01 Python
详解分布式系统中如何用python实现Paxos
May 18 Python
python实现语音常用度量方法的代码详解
May 25 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 目录与文件处理-郑阿奇(续)
2011/07/04 PHP
深入php处理整数函数的详解
2013/06/09 PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
2016/05/06 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
2012/01/13 Javascript
JavaScript日期时间格式化函数分享
2014/05/05 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
Node.js中使用计时器定时执行函数详解
2014/08/15 Javascript
jQuery针对各类元素操作基础教程
2014/08/29 Javascript
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
Javascript实现获取及设置光标位置的方法
2015/07/21 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
快速实现jQuery多级菜单效果
2017/02/01 Javascript
AngularJS学习第二篇 AngularJS依赖注入
2017/02/13 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
Vue 设置axios请求格式为form-data的操作步骤
2019/10/29 Javascript
requests和lxml实现爬虫的方法
2017/06/11 Python
Python多进程multiprocessing用法实例分析
2017/08/18 Python
TensorFlow模型保存和提取的方法
2018/03/08 Python
对python 匹配字符串开头和结尾的方法详解
2018/10/27 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
PageFactory设计模式基于python实现
2020/04/14 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
完美解决IE8下不兼容rgba()的问题
2017/03/31 HTML / CSS
Giglio德国网上精品店:奢侈品服装和配件
2016/09/23 全球购物
美国在线自行车商店:Jenson USA
2018/05/22 全球购物
行政总监岗位职责
2013/12/05 职场文书
甜点店创业计划书
2014/01/27 职场文书
公安民警正风肃纪剖析材料
2014/10/10 职场文书
售后前台接待岗位职责
2015/04/03 职场文书
高中同学会致辞
2015/08/01 职场文书
写作指导:怎么书写竞聘演讲稿?
2019/07/04 职场文书
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL