python爬虫之爬简书热门内容

初学爬虫,简单讲下,上面代码爬的是简书30日热门内容,运用到了抓包所以能够爬取任意页面的内容,不过在下目前还不会封装,有些粗糙,凑合着看吧

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import time
from bs4 import BeautifulSoup
import os
import codecs
import csv
headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}
url = 'http://www.jianshu.com/trending/monthly?seen_snote_ids%5B%5D=9417518&seen_snote_ids%5B%5D=9975670&seen_snote_ids%5B%5D=9983984&seen_snote_ids%5B%5D=9707970&seen_snote_ids%5B%5D=9650477&seen_snote_ids%5B%5D=10065620&seen_snote_ids%5B%5D=10239288&seen_snote_ids%5B%5D=9917498&seen_snote_ids%5B%5D=10066091&seen_snote_ids%5B%5D=10050042&seen_snote_ids%5B%5D=9417837&seen_snote_ids%5B%5D=10133511&seen_snote_ids%5B%5D=9587458&seen_snote_ids%5B%5D=10189199&seen_snote_ids%5B%5D=10443321&seen_snote_ids%5B%5D=10094112&seen_snote_ids%5B%5D=10270938&seen_snote_ids%5B%5D=9654829&seen_snote_ids%5B%5D=8446458&seen_snote_ids%5B%5D=10465818&page='
for a in range(1,100):#爬去前100页的内容
    new_url = url + str(a)
    page = requests.get(new_url,headers=headers)
    soup = BeautifulSoup(page.text,'lxml')
    text = soup.find_all('div',{'class':'content'})
    for i in text:
        authorName = i.find_all('a')[1].get_text() #获得作者名字
        pageTitle = i.find_all('a')[2].get_text()#获得标题
        peopleRead = i.find_all('a')[3].get_text()#获得阅读量
        peopleRead = peopleRead.strip()
        peopleComment = i.find_all('a')[4].get_text()#获得评论数
        peopleComment = peopleComment.strip()
        peopleLike = i.find_all('span')[1].get_text()#获得点赞数
        peopleLike = peopleLike.strip()
        pageAbstract = i.find('p', {'class': 'abstract'}).get_text()#获得摘要
        pageAbstract = pageAbstract.strip()
        getMoney = i.find_all('span')[-1].get_text()  #获得赞赏数( 由于是最后一个了,所以很报错,只能改为逆向)

        authorName = list(authorName.strip().split(','))#生成一维列表
        pageTitle = list(pageTitle.strip().split(','))
        peopleRead= list(peopleRead.strip().split(','))
        peopleComment = list(peopleComment.strip().split(','))
        peopleLike = list(peopleLike.strip().split(','))
        pageAbstract = list(pageAbstract.strip().split(','))
        getMoney = list(getMoney.strip().split(','))
        item = [ [a,b,c,d,e,f,g] for a,b,c,d,e,f,g in zip(authorName,pageTitle,pageAbstract,peopleRead,peopleComment,peopleLike,getMoney)]#将七个列表合成一个二维表
        #print(item)
        #item_name = ['作者', '标题', '摘要', '阅读量', '评论数', '点赞数', '赞赏数']
        with open('简书.csv', 'a+', newline='',encoding="utf_8_sig") as csvfile: #newline=''解决新加入的内容有一行空行
            csvfile.write("\xef\xbb\xbf")#解决乱码问题
            spamwriter = csv.writer(csvfile, delimiter=' ',
                                    quotechar='|', quoting=csv.QUOTE_MINIMAL)
            spamwriter.writerow(item)

time.sleep(1)#设置间隔时间,防止被封IP


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,540评论 25 708
  • 爬虫文章 in 简书程序员专题: like:128-Python 爬取落网音乐 like:127-【图文详解】py...
    喜欢吃栗子阅读 22,054评论 4 411
  • 1 前言 作为一名合格的数据分析师,其完整的技术知识体系必须贯穿数据获取、数据存储、数据提取、数据分析、数据挖掘、...
    whenif阅读 18,107评论 45 523
  • 今天的长安城,暴雨,蓝色警报。糟糕的天气中和了我早晨喝的鸡血。单调的洗漱,背上公包,早早跑去挤那我骂了半个月的2...
    OnlyMorrison阅读 269评论 0 1
  • 临近寒冬,白昼愈来愈短,晚上下班,出地铁站,临近八点,外面的世界除了寒意侵人,便是黑夜,深深的黑;灯火通明的地铁站...
    咖啡与蔷薇阅读 269评论 0 0