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程序抓取网页的HTML信息的一个小实例
May 02 Python
Python实现图片尺寸缩放脚本
Mar 10 Python
Python使用 Beanstalkd 做异步任务处理的方法
Apr 24 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
Jul 12 Python
利用pandas进行大文件计数处理的方法
Jul 25 Python
python使用PIL实现多张图片垂直合并
Jan 15 Python
python实现词法分析器
Jan 31 Python
python 通过可变参数计算n个数的乘积方法
Jun 13 Python
Python算法的时间复杂度和空间复杂度(实例解析)
Nov 19 Python
浅析NumPy 切片和索引
Sep 02 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
Jan 28 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
Mar 04 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 调试利器debug_print_backtrace()
2012/07/23 PHP
php版微信公众平台之微信网页登陆授权示例
2016/09/23 PHP
PHP反射学习入门示例
2019/06/14 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
2015/01/13 Javascript
Shell脚本实现Linux系统和进程资源监控
2015/03/05 Javascript
jQuery实现Div拖动+键盘控制综合效果的方法
2015/03/10 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
2015/08/10 Javascript
js实现简单的验证码
2015/12/25 Javascript
非常酷炫的Bootstrap图片轮播动画
2016/05/27 Javascript
针对JavaScript中this指向的简单理解
2016/08/26 Javascript
微信小程序商城项目之淘宝分类入口(2)
2017/04/17 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
2020/02/27 Javascript
Vue3为什么这么快
2020/09/23 Javascript
零基础写python爬虫之使用urllib2组件抓取网页内容
2014/11/04 Python
python删除特定文件的方法
2015/07/30 Python
利用python代码写的12306订票代码
2015/12/20 Python
python读写json文件的简单实现
2017/04/11 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
Python WEB应用部署的实现方法
2019/01/02 Python
python实现扑克牌交互式界面发牌程序
2020/04/22 Python
pycharm 2020 1.1的安装流程
2020/09/29 Python
Html5 web本地存储实例详解
2016/07/28 HTML / CSS
逻辑链路控制协议
2016/10/01 面试题
机电一体化自荐信
2013/12/10 职场文书
县优秀教师事迹材料
2014/01/31 职场文书
加强干部作风建设整改方案
2014/10/24 职场文书
房屋买卖协议样本
2014/11/16 职场文书
学校国庆节活动总结
2015/03/23 职场文书
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers