request + BeautifulSoup 爬取豆瓣250

import requests
from bs4 import BeautifulSoup


def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()#状态码为200则返回文本否则抛出异常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "产生异常"


def get_data(list, html):
    tables = BeautifulSoup(html, 'html.parser').find('div', {'class': 'indent'}).find_all('table')
    for table in tables:
        title = table.find('div', {'class': 'pl2'}).find('a').get_text()
        info = table.find('p', {'class': 'pl'}).get_text()
        list.append([title.strip(), info.strip()])


def print_data(list):
    print("{:^6}\t{:^10}\t{:^16}".format('序号', '书名', '信息'))
    count = 0
    for b in list:
        count += 1
        print("{:^6}\t{:^16}\t{:^16}".format(count, b[0], b[1]))


def main():
    start_url = 'https://book.douban.com/top250?'
    depth = 10
    info_list = []
    for i in range(depth):
        url = start_url + str(25 * i)
        html = getHTMLText(url)
        get_data(info_list, html)
    print_data(info_list)


if __name__ == '__main__':
    main()
  •    其他爬虫代码可参考github
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,711评论 25 709
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 14,483评论 2 59
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    小迈克阅读 8,158评论 1 3
  • 镜头可以控制对焦以及光圈 一个好的照片就是由对焦,光圈,已经底片ISO结合构成合适的曝光,形成恰到好处的照片。 镜...
    浅浅君子阅读 1,865评论 0 0
  • 那年花开,青春洋溢之时,风儿摇曳百合,偷影子的岁月轻抚一群被定义为年轻人的脸庞。伴随着愉悦的旋律,揉...
    舍予心阅读 3,421评论 1 1