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程序设计入门(4)模块和包
Jun 16 Python
用python结合jieba和wordcloud实现词云效果
Sep 05 Python
Python探索之ModelForm代码详解
Oct 26 Python
Python进程间通信之共享内存详解
Oct 30 Python
python生成tensorflow输入输出的图像格式的方法
Feb 12 Python
详解Python最长公共子串和最长公共子序列的实现
Jul 07 Python
基于tensorflow加载部分层的方法
Jul 26 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
Oct 11 Python
python实现一个简单的ping工具方法
Jan 31 Python
Python3中列表list合并的四种方法
Apr 19 Python
python将字符串转换成json的方法小结
Jul 09 Python
Python字符串hashlib加密模块使用案例
Mar 10 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/10/09 PHP
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
有关php运算符的知识大全
2011/11/03 PHP
php中OR与|| AND与&&的区别总结
2013/10/26 PHP
php foreach循环中使用引用的问题
2013/11/06 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
2014/12/24 PHP
smarty简单应用实例
2015/11/03 PHP
浅谈PHP Cookie处理函数
2016/06/10 PHP
laravel 错误处理,接口错误返回json代码
2019/10/25 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
2013/03/25 Javascript
分享网页检测摇一摇实例代码
2016/01/14 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
2016/01/15 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
angularjs实现多张图片上传并预览功能
2017/02/24 Javascript
基于Vue2-Calendar改进的日历组件(含中文使用说明)
2019/04/14 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
[36:20]KG vs SECRET 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python中的CURL PycURL使用例子
2014/06/01 Python
python开发之str.format()用法实例分析
2016/02/22 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
Php多进程实现代码
2018/05/07 Python
python代码实现逻辑回归logistic原理
2019/08/07 Python
pip 安装库比较慢的解决方法(国内镜像)
2019/10/06 Python
Django Form常用功能及代码示例
2020/10/13 Python
小学生自我评价范文
2014/01/25 职场文书
火车来了教学反思
2014/02/11 职场文书
国际贸易专业个人鉴定
2014/02/22 职场文书
副董事长岗位职责
2014/04/02 职场文书
法学自荐信
2014/06/20 职场文书
避暑山庄导游词
2015/02/04 职场文书
签订劳动合同通知书
2015/04/16 职场文书
社区党支部承诺书
2015/04/29 职场文书
关于车尾的标语大全
2015/08/11 职场文书
在Python中如何使用yield
2021/06/07 Python