Python爬虫实现使用beautifulSoup4爬取名言网功能案例

yipeiwu_com6年前Python爬虫

本文实例讲述了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爬虫常用库的安装及其环境配置

Python常用库的安装 urllib、re 这两个库是Python的内置库,直接使用方法import导入即可。 在python中输入如下代码: import urllib imp...

用python3 urllib破解有道翻译反爬虫机制详解

用python3 urllib破解有道翻译反爬虫机制详解

前言 最近在学习python 爬虫方面的知识,网上有一博客专栏专门写爬虫方面的,看到用urllib请求有道翻译接口获取翻译结果。发现接口变化很大,用md5加了密,于是自己开始破解。加上...

python3爬虫之设计签名小程序

python3爬虫之设计签名小程序

本文实例为大家分享了python3设计签名小程序的具体代码,供大家参考,具体内容如下 首先,上一下要做的效果图: 先是这样一个丑陋的界面(我尽力了的真的!) 然后随便输入名字 然后点...

学习Python selenium自动化网页抓取器

直接入正题---Python selenium自动控制浏览器对网页的数据进行抓取,其中包含按钮点击、跳转页面、搜索框的输入、页面的价值数据存储、mongodb自动id标识等等等。 1、首...

python利用beautifulSoup实现爬虫

以前讲过利用phantomjs做爬虫抓网页 /post/55789.htm 是配合选择器做的 利用 beautifulSoup(文档 :http://www.crummy.com/sof...