Python爬虫之Xpath学习问题解决用xpath方法爬取豆瓣图书top250分析总结

问题解决

这是我昨天发的简书python爬虫之豆瓣音乐top250大牛们解决了一大部分的问题

1 MySQL报错问题

字段长度设置太小,说着也很奇怪,我用的vachar(20)都说小了,哎,后面建表干脆用text型,数据量不大还行。

2 爬不到数据的问题

我只能说是完美答案,我在这就不解释了,这个简友是it互联网的编辑,平时也会写很多Python爬虫的文章,大家可以去看看,今天的Xpath文章就是一个简友还有这个向右奔跑的帮助下完成的,在此谢谢他们,另一个等会再提,哈哈。

3 代码累赘问题

这种会节省一定的代码量,今天的代码有用到哦!

用xpath方法爬取豆瓣图书top250

xpath方法去看看向右奔跑的文章就好啦,讲的很好,我就不在这班门弄斧啦,还推荐一个我的好友:好友博客,今天的大部分代码是他指导完成的,也是他指导我学的Mysql,大家一起学习很开心,来看代码:

from lxml import etree
import requests
import time
import pymysql

conn = pymysql.connect(host='localhost', user='root', passwd='123456', db='test', port=3306, charset='utf8')
cursor = conn.cursor()

urls = ['https://book.douban.com/top250?start={}'.format(str(i)) for i in range(0,250,25)]

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
}

for url in urls:
    html = requests.get(url,headers=headers)
    selector = etree.HTML(html.text)
    infos = selector.xpath('//tr[@class="item"]')
    for info in infos:
        name = info.xpath('td/div/a/@title')[0]
        url = info.xpath('td/div/a/@href')[0]
        book_infos = info.xpath('td/p/text()')[0]
        author = book_infos.split('/')[0]
        publisher = book_infos.split('/')[-3]
        date = book_infos.split('/')[-2]
        price = book_infos.split('/')[-1]
        rate = info.xpath('td/div/span[2]/text()')[0]
        comments = info.xpath('td/p/span/text()')
        comment = comments[0] if len(comments) != 0 else "空"
        cursor.execute("use test")
        cursor.execute("insert into doubanbook (name,url,author,publisher,date,price,rate,comment) values(%s,%s,%s,%s,%s,%s,%s,%s)",
                       (str(name),str(url),str(author),str(publisher),str(date),str(price),str(rate),str(comment)))
        time.sleep(2)
conn.commit()

xpath比beatifulsoup解析难一点,关键是找循环点,下面是我建表的mysql代码:

  CREATE TABLE doubanbook (
 name TEXT,
 url TEXT,
 author TEXT,
 publisher TEXT,
 dateTEXT,
 price TEXT,
 rate TEXT,
 comment TEXT
 )ENGINE INNODB DEFAULT CHARSET=utf8 ;

分析

SELECT * FROM doubanbook;

下面是出版量前五的出版社

SELECT publisher,COUNT(*) AS numbers FROM doubanbook GROUP BY publisher ORDER BY numbers DESC LIMIT 0,5;

评分前十的图书,想看书的给你们推荐一波

SELECT NAME,author,publisher,rate,COMMENT FROM doubanbook ORDER BY rate DESC LIMIT 0,10;

总结

今天主要是学习了xpath爬取数据的方法,其次是练习了一下mysql的查询语法,查询的数据可以进行可视化分析,我今天就不做了,春节快乐。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏tkokof 的技术,小趣及杂念

HGE系列之十 管中窥豹(游戏字体)

对于一款游戏引擎来说,支持显示字体自然是必备的功能,HGE内建的字体功能虽然仅支持一般的位图字体,但是也算是简洁明了,这次的HGE源码之旅就让我们来看一看他的各...

361
来自专栏阿凯的Excel

自定义单元格格式介绍(第一期 数字版)

之前分享金字塔图(有链接哦)的时候,有分享将负数显示为正数的小技巧,当时有朋友让我全面的分析自定义单元格格式,因为我很喜欢一句话:“迟到比不到好”。所以我就故意...

2845
来自专栏一“技”之长

Objective—C语言的新魅力——Nullability、泛型集合与类型延拓

        在Xcode7中,iOS9的SDK已经全面兼容了Objective-C的一些新特性和新功能。这些功能都只作用于编译期,对程序的运行并没有影响,因...

713
来自专栏py+selenium

python爬虫笔记之爬取足球比赛赛程

目标:爬取某网站比赛赛程,动态网页,则需找到对应ajax请求(具体可参考:https://blog.csdn.net/you_are_my_dream/arti...

701
来自专栏柠檬先生

css3基础知识——回顾

1.属性选择器 完全匹配的属性选择器 [id=article]{}     示例:       <style>         input[typ...

2147
来自专栏freesan44

iOS中URL编码那些事

在iOS程序中,访问一些HTTP/HTTPS的资源服务时,如果url中存在中文或者特殊字符时,会导致无法正常的访问到资源或服务,想要解决这个问题,需要对url进...

682
来自专栏AI科技大本营的专栏

送书 | 跟我一起学《流畅的Python》

本文引自图灵新书《流畅的Python》的第一章——Python数据模型。本书由奋战在Python开发一线近20年的Luciano Ramalho执笔,Victo...

3294
来自专栏滕先生的博客

XML解析方式及GData框架使用一、概念二、XML解析SAM方式(只读)三、DOM方式解析(可读写)四、GData写入功能,生成XML

2656
来自专栏编程之旅

iOS设计模式之简单工厂模式

最近在看关于设计模式的书籍,开始觉得在设计程序架构之时,能够灵活运用这些设计模式,代码将变得非常具有美感。一个好的设计模式使得程序更加的灵活,容易修改,易于使用...

401
来自专栏技术专栏

scrapy进阶开发(一):scrapy架构源码分析

其子类有HtmlResponse,TextResponse,XmlResponse

1303

扫码关注云+社区