专栏首页有趣的Python和你Python爬虫之Xpath学习问题解决用xpath方法爬取豆瓣图书top250分析总结

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 条评论
登录 后参与评论

相关文章

  • 用Python看我的2018

    2018余额已不到两天,2018初的flag完成了几个?今天我利用Python爬虫和数据分析技术,分析我的2018年文章分享情况。

    罗罗攀
  • Python数据分析之一元线性回归问题Python方差分析结论

    罗罗攀
  • Python有趣|微博榜单爬虫,尽知天下事

    大家对于网页的数据爬虫了解的已经很多了,这次爬取APP端的数据。之前我也讲解过APP爬虫,但是没有讲解过Fiddler的配置和使用。这次以微博榜单为案例,介绍A...

    罗罗攀
  • WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)漏洞复现&修复方案

    0x00 漏洞简介 此次漏洞是针对Oracle WebLogic Server组件的WLS Security子组件 使用精心构造的xml数据可能造成任意代码执行...

    ChaMd5安全团队
  • 谷歌AI研究大爆发:一年发218篇机器学习论文,近年研究人员增两倍

    李杉 编译自 Technology Review 量子位 出品 | 公众号:QbitAI 《自然》、《美国国家科学院院刊》、《美国医学会期刊》,这些都是当今世界...

    量子位
  • 继清华之后,北邮成立人工智能研究院

    据人民网报道,今天(7 月 19 日),北京邮电大学创新研究院在该校宏福校区正式揭牌成立。创新研究院下设人工智能、物联网、信息功能材料、网络空间安全和军民融合技...

    AI科技大本营
  • 达观数据贾学锋:未来企业内50%以上的基础性文字处理工作将由计算机完成

    6月8日,由中国人工智能产业发展联盟(AIIA)、上海临港地区开发建设管理管委会、上海临港科技创业中心联合举办“2018年人工智能产业发展峰会暨中国人工智能产业...

    达观数据
  • 如何让强化学习走进现实世界?DeepMind要用“控制套件”推动

    夏乙 编译整理 量子位 出品 | 公众号 QbitAI 火遍全球的AlphaGo让我们知道了强化学习打游戏究竟有多6,这么强大的算法什么时候才能打破次元壁,走进...

    量子位
  • 清华大学邓志东教授:国内研究氛围浮躁,原创性算法太少

    AI 科技评论按:自去年 3 月 AlphaGo 战胜李世乭后,人工智能「突如一夜春风来」地步入人们视线,业已成为家喻户晓的一个名词。目前,以深度卷积神经网络为...

    AI科技评论
  • Python:pygame 作用

      pygame是一个设计用来开发游戏的Python模块,在SDL库的基础上提供了各种接口,从而使用用户能够使用python语言创建各种各样的游戏或多媒体程序...

    bear_fish

扫码关注云+社区

领取腾讯云代金券