2015年1月16日

我的第一只爬虫:爬取豆瓣读书

在YouTube上找到了一个Python爬虫的教程,然后照着做了一下,试着爬取了豆瓣上的一些信息。从下午3点多做到快9点,感觉又学到了不少东西。期间,发现了一个让我很惊讶、高兴的事,python中的字符串似乎是不限制长度的。我尝试了一下使用一千万位的字符串,没有任何问题。这一点,可比Java贴心多了啊。之前用Java写词法分析器的实验时,由于长度限制,用到字符串时就很麻烦。

主要是参考这个网站的教程(就是我在YouTube上看的教程):https://www.thenewboston.com/forum/topic.php?id=1610

这个爬虫的源代码如下:

————————————————————————————————————————

因评论区某网友提醒,得知豆瓣网站的信息有所变化,已于4月26日上午重写代码。

代码已托管到GitHub:https://github.com/plough/myCrawler/blob/master/doubanBook/book_list_spider.py

若有任何问题请留下评论或者直接与我联系。


“以书为舟,遨游尘世”,
最好的免费 kindle 电子书分享站:

You may also like...

36 Responses

  1. 开心100说道:

    py 3 吗

    • plough说道:

      我用的py2。py3应该也能跑吧,那个tutor是用的py3。我用py2,只是字符编码那里有了点问题,开头那几行代码就是解决这个问题的。其他没什么。

  2. 诺伊网说道:

    从知乎上一路过来,爬虫做聚合内容页面输出不错,可惜我不会编程,要不做个这样的网站吹吹牛也是不错滴,感谢博主。

  3. 暴雨说道:

    知乎看到了,过来支持一下

  4. 哈士奇说道:

    博主可否将具体使用方法写下?
    在下刚刚接触python,在IDLE上运行无误,但看不到效果,我该怎么办?是我还缺少什么配置吗?

    • plough说道:

      正常情况下,这段代码运行之后,会在源文件所在目录下生成一个“book_list.txt”文件。既然运行无误,相关的模块(BS4)应该已经安装了吧?多检查检查。python推荐这个入门教程:http://learnpythonthehardway.org/book/

  5. 零宣说道:

    从知乎过来的,是大一的信安新生,感觉大开眼界呢

  6. ROCK说道:

    知乎溜过来的。lz给力,加油!

  7. 木叶飞飞说道:

    哈哈,我也是知乎观光团的,支持博主。python写爬虫确实很强大。顺便问下,博主这是用的什么显示代码插件。

  8. kingzhang说道:

    可以使用HTML DOM方式,直接读取的..比这个方便多了,你这种方式也是我之前用的..我这二天也要写一个模似人登陆网站的,然后获取页面数据的,和你这类似,稍后好了发来看看..

  9. MDFS说道:

    看到博主的时钟显示很有趣啊,是人组成的!

  10. rocky chen说道:

    网站是楼主做的吗? 很棒呀。
    以后有空可以交流交流吗? 联系我的邮箱~ 或则扣扣 1957973695
    我也准备搞一个技术博客。 你这个可以不用注册就能够留言的,很不错。 但是我怕这样会不会被注入呢~~
    测试一下~~嘻嘻

  11. 孜然说道:

    现在豆瓣的网页源代码有所调整,用这个soup.findAll好像抓取不到了。再加上把整个网站的标签合并到一起了。博主能更新一下吗?

    • plough说道:

      这样啊……我也就写过这一个爬虫,不知道行不行……过两天试一下。

    • plough说道:

      你好,爬虫代码已经更新,测试可用!谢谢你提的问题,这次重写,感觉轻松多了,看来这段时间还是有进步哈 ^_^

  12. Bruce说道:

    我这段时间也在学爬虫

  13. 知呼观光团说道:

    知呼观光团到此一游

  14. ahren说道:

    请问代码里的header是做什么用的,一直有些困惑。我是非计算机的,业余学点爬虫。

  15. 中欢说道:

    问一下朋友,你的博客这个是用的模板吗,什么写的?

  16. sanwenshi说道:

    博主写的很好哦,谢谢分享了
    这里有写好的豆瓣采集爬虫,有需要的可是试试
    http://www.shenjianshou.cn/index.php?r=market/configDetail&pid=12

发表回复

您的电子邮箱地址不会被公开。


*