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从入门到精通(DAY 2)
Dec 20 Python
python 简单的多线程链接实现代码
Aug 28 Python
浅谈Python类的__getitem__和__setitem__特殊方法
Dec 25 Python
Python实现登录接口的示例代码
Jul 21 Python
python实现excel读写数据
Mar 02 Python
Python实现的根据文件名查找数据文件功能示例
May 02 Python
从运行效率与开发效率比较Python和C++
Dec 14 Python
python fuzzywuzzy模块模糊字符串匹配详细用法
Aug 29 Python
Python3 pandas 操作列表实例详解
Sep 23 Python
python使用Geany编辑器配置方法
Feb 21 Python
python nohup 实现远程运行不宕机操作
Apr 16 Python
python实现批量命名照片
Jun 18 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环境搭建最新方法
2006/09/05 PHP
PHP管理内存函数 memory_get_usage()使用介绍
2012/09/23 PHP
PHP文件缓存smarty模板应用实例分析
2016/02/26 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
IE8 原生JSON支持
2009/04/13 Javascript
判断脚本加载是否完成的方法
2009/05/26 Javascript
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
jquery实现的仿天猫侧导航tab切换效果
2015/08/24 Javascript
jQuery UI插件实现百度提词器效果
2016/11/21 Javascript
Bootstrap轮播图的使用和理解4
2016/12/14 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
JS实现的简单表单验证功能完整实例
2017/10/14 Javascript
AngularJS表单验证功能
2017/10/19 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
VUE中使用HTTP库Axios方法详解
2020/02/05 Javascript
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
Django 多语言教程的实现(i18n)
2018/07/07 Python
python高阶爬虫实战分析
2018/07/29 Python
Python面向对象之类的定义与继承用法示例
2019/01/14 Python
python用quad、dblquad实现一维二维积分的实例详解
2019/11/20 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
python爬虫实现POST request payload形式的请求
2020/04/30 Python
python 制作网站小说下载器
2021/02/20 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
优纳科技软件测试面试题
2012/05/15 面试题
城市规划毕业生求职信
2013/10/10 职场文书
员工评语大全
2014/01/19 职场文书
三八妇女节演讲稿
2014/05/27 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
压缩Redis里的字符串大对象操作
2021/06/23 Redis
【DOTA2】高能暴走TK秀!PSG LGD vs ASTER - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA
Python中的 enumerate和zip详情
2022/05/30 Python