import requests
from bs4 import BeautifulSoup
import time
from selenium import webdriverdef urls(url, headers):'''访问url并返回text'''u = requests.get(url, headers=headers)if u.status_code == 200:return u.textelse:print('访问错误:', u.status_code)return None# 下面是爬取专题def title_url():'''指定专题关键字抓取'''url_list = []  # 储存编号的urlguan_input = input('请输入要抓取专题的关键字:')zhuaqu_time = input('是否连续抓取:(是、否),如:‘是’的话那就一次性抓取全部专题目录,直到抓取完为止,中间不会停止。‘否’的话,每页都会提示是否有需要抓取的内容了。')webdr = webdriver.Firefox()k = 1  # 生成编号for fanye in range(1, 100000):url_b = 'https://www.jianshu.com/search?q=' + str(guan_input) + '&page=' + str(fanye) + '&type=collection'webdr.get(url_b)time.sleep(3)soup = BeautifulSoup(webdr.page_source, 'lxml')if soup.select('div.info a'):  # 判断是否还有内容for i in soup.find_all(class_='search-content'):# 搜索结果总数量for shu_l in i.find(class_='result'):print('专题:{0} 共{1}'.format(guan_input, shu_l))print('正在抓取。。。')if zhuaqu_time == '是':print('*' * 50)for n in i.find(class_='user-list'):# 标题for title in n.select('div.info a'):print(str(k) + '、' + title.string.strip())# print(title.get('href'))url_list.append(title.get('href'))k += 1# 关注人数for guanzhu in n.find(class_='meta'):print(guanzhu.get_text().strip())print('*' * 50)elif zhuaqu_time == '否':print('*' * 50)for n in i.find(class_='user-list'):# 标题for title in n.select('div.info a'):print(str(k) + '、' + title.string.strip())# print(title.get('href'))url_list.append(title.get('href'))k += 1# 关注人数for guanzhu in n.find(class_='meta'):print(guanzhu.get_text().strip())print('*' * 50)jix = input('是否继续抓取:(是、否)')if jix == '否':inputs = input('请选择您要抓取的专题编号:')webdr.quit()return url_list[int(inputs) - 1]else:print('已全部抓取完成!')breakprint('=' * 50)print('第{}页已完成!'.format(fanye))print('=' * 50)webdr.quit()inputs = input('请选择您要抓取的专题编号:')return url_list[int(inputs) - 1]def soup_url(_text):"""抓取专题外页数据传入参数是外页的URL.text返回值以列表的形式返回三个列表和两个字符串,列表分别:标题,发表人,对应的URL字符串分别:专题name, 关注和发布数量"""soup = BeautifulSoup(_text, 'lxml')title = []name = []url_s = []for f in soup.find_all(class_='main-top'):# 关注和发布数量for fangwen in f.find_all(class_='info'):fang_wen = fangwen.get_text().strip()# 专题namefor tt_name in f.find_all(class_='name'):zt_name = tt_name.get_text().strip()for i in soup.find_all(class_='content'):# 标题for q in i.find(class_='title'):title.append(q)# 发表人名字for w in i.find(class_='nickname'):name.append(w)# urlfor e in i.select('a.title'):url_s.append('https://www.jianshu.com' + e.get('href'))return title, name, url_s, zt_name, fang_wendef shuchu_wai(headers, _url):'''输出外页数据'''urlurl = []xunwen = input('是否连续抓取:(是、否),如:‘是’的话那就一次性抓取全部文章,直到抓取完为止,中间不会停止。‘否’的话,每页都会提示是否有需要抓取的内容了。')jishu = 1if xunwen == '是':for i in range(1, 100000):url = 'https://www.jianshu.com' + str(_url) + '?order_by=added_at&page=' + str(i)url_text = urls(url, headers=headers)t, n, u, zt, fan = soup_url(url_text)if t:  # 判断是否有内容print('专题:{0}{1}, 正在爬取第{2}页...'.format(zt, fan, int(i)))for ts, ns, us in zip(t, n, u):print('*' * 50)print('{0}、标题:{1}'.format(jishu, ts))print('发表人:', ns)print('URL:', us)urlurl.append(us)jishu += 1print('*' * 50)else:breaktime.sleep(2)print('完成!')chakan = input('输入查看的文章编号:')return urlurl[int(chakan) - 1]elif xunwen == '否':for i in range(1, 100000):url = 'https://www.jianshu.com' + str(_url) + '?order_by=added_at&page=' + str(i)url_text = urls(url, headers=headers)t, n, u, zt, fan = soup_url(url_text)if t:  # 判断是否有内容print('专题:{0}{1}, 正在爬取第{2}页...'.format(zt, fan, int(i)))for ts, ns, us in zip(t, n, u):print('*' * 50)print('{0}、标题:{1}'.format(jishu, ts))print('发表人:', ns)print('URL:', us)urlurl.append(us)jishu += 1print('*' * 50)else:breakjix = input('是否继续抓取:')if jix == '否':chakan = input('输入查看的文章编号:')return urlurl[int(chakan) - 1]time.sleep(2)print('已全部住抓取完成!')def nei_soup(_text):'''抓取了内页的数据'''soup = BeautifulSoup(_text, 'lxml')for i in soup.find_all(class_='_2rhmJa'):return i.get_text().strip()# 下面是爬取文章def wen_selenuim():pass# 下面是菜单def caidan():'''菜单(待开发)'''print('1、文章')print('2、专题')a = input('请选择你要抓取的选项:')return adef zhuaqu():print('正在抓取。。。')print('正在抓取。。。')print('正在抓取。。。')print('正在抓取。。。')def main():headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0'}xuanx = caidan()if xuanx == '1':print('还没开发!')elif xuanx == '2':sousuo = title_url()  # 关键字专题抓取zhuaqu()a = shuchu_wai(headers, sousuo)  # 在抓取外页标题和数据u = urls(a, headers)zhuaqu()nei = nei_soup(u)print(nei)else:print('输入有误!')if __name__ == '__main__':main()

使用python抓取简书的关键字专题下所有文章相关推荐

  1. 简书爬ajax接口获取csrf,Python爬取简书主页信息

    主要学习如何通过抓包工具分析简书的Ajax加载,有时间再写一个Multithread proxy spider提升效率. 1. 关键点: 使用单线程爬取,未登录,爬取简书主页Ajax加载的内容.主要有 ...

  2. selenium+python爬取简书文章

    页面加载逻辑 当你兴致勃勃地从网上学习了基本的爬虫知识后就像找个目标实践下,拥有大量文章的简书包含了大量的有价值信息,所以自然成为了你的选择目标,如果你尝试之后会发现并没有想象的那么简单,因为里面包含 ...

  3. 简书python_使用 Python 爬取简书网的所有文章

    01 抓取目标 我们要爬取的目标是「 简书网 」. 打开简书网的首页,随手点击一篇文章进入到详情页面. 我们要爬取的数据有:作者.头像.发布时间.文章 ID 以及文章内容. 02 准备工作 在编写爬虫 ...

  4. python抓取小红书_小红书很难爬?最新爬取方法教给你啦~

    前言 大家好,我是Kuls. 之前写的那篇App抓包软件charles的配置说过,超过30在看,马上更下一篇.有读者问我怎么爬App,我手把手教了他(多图警告) 所以加班加点给大家写了今天这篇文章. ...

  5. python3 抓取简书,增加浏览量

    访问简书实现刷新访问次数,什么都不说直接上代码 (一) # -*- coding:utf-8 -*- import sys import random import requests import p ...

  6. 实战项目五:抓取简书文章信息

    源码: from fake_useragent import UserAgent from lxml import etree import lxml,requestsurl="https: ...

  7. python 抓取目录树_python 获取文件下所有文件或目录os.walk()的实例

    在python3.6版本中去掉了os.path.walk()函数 os.walk() 函数声明:walk(top,topdown=True,oneerror=None) 1.参数top表示需要遍历的目 ...

  8. python 简书_python爬取简书网文章的方法

    python爬取简书网文章的方法 发布时间:2020-06-30 14:37:08 来源:亿速云 阅读:100 作者:清晨 这篇文章主要介绍python爬取简书网文章的方法,文中示例代码介绍的非常详细 ...

  9. 基于python爬虫的论文标题_Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】...

    本文实例讲述了Python3实现爬取简书首页文章标题和文章链接的方法.分享给大家供大家参考,具体如下: from urllib import request from bs4 import Beaut ...

  10. 真小白|一步步教你用Python抓取微信好友分析

    前言 前段时间公司里有个同事发了张图片在群上,是他所有微信好友头像拼成的一张大图,我看着挺有意思,就想自己也搞一下,然后百度了下怎么抓取微信好友之类的--一搜全是用Python抓取的,之前就听说过Py ...

最新文章

  1. bootstrap fileinput上传返回400,404,500 等错误替换
  2. 提高oracle查询效率
  3. 使用Pylint进行Python代码规范检查
  4. 白话Elasticsearch58-数据建模实战_基于nested object实现博客与评论嵌套关系
  5. 白话Elasticsearch40-深入聚合数据分析之案例实战_Global Aggregation:单个品牌与所有品牌平均价格对比
  6. how to make academic sentences
  7. P7717-「EZEC-10」序列【Trie】
  8. yum 如何知道从哪里下载包?
  9. SecureCRT配置
  10. php txtsql 说明,PHP学习笔记(2)txtSQL文档错误
  11. 股票决定卖不卖?近六成粉丝支持马斯克出售10%特斯拉股票
  12. 支持magento扩展性的几个特性
  13. 一些关于直播间人货场的打造干货,直播电商新手必须要了解人货场的概念
  14. HTTP代理和SOCKS代理有什么区别
  15. Charles(1) 请求转发
  16. 寻迹pid算法 c语言,基于STC12C5A60S2单片机及PID控制算法的气味循迹车设计
  17. 批量导出二维码并生成压缩文件
  18. Hive数据分析案例
  19. win11运行gnuplot报错:This application failed to start because no Ot platform plugin could be initialized
  20. 像冯满天老师一样热爱一样东西

热门文章

  1. 容易被忽略的国家地理信息安全
  2. Washing clothes(李超树)
  3. NPM常用命令、NRM的使用
  4. 205.164.48.243//index.php,完美解决php无法切片上传大文件方法
  5. 笔记-商务与经济统计 第2章 描述统计学 I:表格法和图形法
  6. 攻防世界ReverseMe-120详解
  7. java中审核订单流程图_订单评审管理过程流程图
  8. 公交车还有三分钟到站,我却突然想去洗手间...
  9. 日语片假名词语汇总之キ
  10. .net爬虫使用HtmlAgilityPack爬取网络数据