临汾山东漯河饰品美体美文
投稿投诉
美文创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品
漯河衢州
兴义眉山
桂林阳泉
玉溪简阳
山东遂宁
永城新余
梧州洛阳
泸州温州
临汾清远
营口常熟
浙江大连
桐乡宜昌

Python爬虫面向知乎的答案提取和图片下载

8月16日 斩情道投稿
  需求描述:爬取知乎的答案,爬取并下载一个问题下所有回答中的图片。
  实现平台:开发工具PyCharm2017,语言版本Python3。6,Chrome谷歌浏览器。
  基本原理:1。发送请求,获取网页HTML源码;解析HTML,获取数据;保存数据。2
  模拟浏览器登录,获取并解析HTML,获取数据。利用Python中的库即可便捷实现。
  功能实现1:知乎答案爬取
  实现思路:
  1。首先实现安装好第三方模块requests和bs4并调用。
  2。其次设置Http请求头,利用requests访问网页获取到源代码,利用bs模块中的BeautifulSoup得到解析过后的html。
  3。随后,分别通过对照网页源代码中标签内容进行匹配,分别获取问题标题、问题内容、点赞数以及答案等内容。
  4。最后进行包括知乎答案等信息的打印。
  分别对应上述思路进行代码编写。
  1。调用第三方模块。
  coding:UTF8
  爬取知乎答案
  importrequests
  frombs4importBeautifulSoup
  2。设置Http请求头:可以在Chrome谷歌浏览器的网页中的任意地方按下F12,打开chrome自带的调试工具,在调试工具中选择network标签,F5刷新网页后在左边找到该网页url,点击该url,选择Headers,就可以看到当前网页的Http头。复制到header{}中。
  获取源代码并解析:利用requests和BeautifulSoup实现,并返回解析后的body。
  获取网页body里的内容
  defgetcontent(url,dataNone):
  设置Http请求头,根据自己电脑查一下
  header{
  Accept:texthtml,applicationxhtmlxml,q0。9,imagewebp,;q0。8,
  AcceptEncoding:gzip,deflate,sdch,
  AcceptLanguage:zhCN,q0。8,
  Connection:keepalive,
  UserAgent:Mozilla5。0(WindowsNT6。3;WOW64)AppleWebKit537。36(KHTML,likeGecko)Chrome43。0。235
  }
  reqrequests。get(url,headersheader)
  req。encodingutf8
  bsBeautifulSoup(req。text,html。parser)创建BeautifulSoup对象
  bodybs。body
  returnbody
  3。标签内容进行class匹配:问题标题QuestionHeadertitle,问题内容RichTextztext,点赞量ButtonVoteButtonVoteButtonup,问题回答ContentItemtime。
  获取问题标题
  defgettitle(htmltext):
  datahtmltext。find(h1,{class:QuestionHeadertitle})匹配标签
  returndata。string。encode(utf8)
  获取问题内容
  defgetquestioncontent(htmltext):
  datahtmltext。find(span,{class:RichTextztext})
  print(data。string)
  ifdata。stringisNone:
  out
  fordatastringindata。strings:
  datastringdatastring。encode(utf8)
  outoutdatastring。encode(utf8)
  print(内容:out)
  else:
  print(内容:data。string。encode(utf8))
  获取点赞数
  defgetansweragree(body):
  agreebody。find(button,{class:ButtonVoteButtonVoteButtonup})
  agreehtmlBeautifulSoup(str(agree),html。parser)
  allbuttonsagreehtml。findall(button,{class:ButtonVoteButtonVoteButtonup})
  onebuttonallbuttons〔0〕
  agreenumberonebutton〔arialabel〕
  print(agreenumber)
  获取答案
  defgetresponse(htmltext):
  out1
  responsehtmltext。findall(p,{class:ContentItemtime})
  forindexinrange(len(response)):
  获取标签
  answerhrefresponse〔index〕。find(a,{target:blank})
  ifnot(answerhref〔href〕。startswith(javascript)):
  urlhttp:answerhref〔href〕
  bodygetcontent(url)
  getansweragree(body)
  answerbody。find(span,{class:RichTextztextCopyrightRichTextrichTextcsshnrfcf})
  ifanswer。stringisNone:
  out
  fordatastringinanswer。strings:
  datastringdatastring。encode(utf8)
  outoutstr(datastring,encodingutf8)
  else:
  print(answer。string。encode(utf8))
  out1out1out
  returnurlout1
  4。结果输出打印:以一个网址为例,调用之前编写的函数,进行信息的获取和打印。
  输入要爬取的网址
  URLtargethttps:www。zhihu。comquestion505503990answer2276487889
  htmltextgetcontent(URLtarget)
  titlegettitle(htmltext)
  print(标题:str(title,encodingutf8))
  datagetresponse(htmltext)
  print(data)
  功能实现2:知乎图片下载
  实现思路:
  1。首先实现安装好chromedriver模拟人为登录浏览器,模拟登录网页,中途拿手机扫码登录。
  2。安装好模块selenium、time、urllib。request、bs4和html。parser并调用。
  3。利用chromedriver打开浏览器并登录知乎,利用bs模块中的BeautifulSoup得到解析过后的html。
  4。随后,找到照片并进行下载。
  5。保存所有图片。
  思路是先模拟登录网页,(中途拿手机扫码登录),然后逐步爬取所有回答。
  1。下载对应Chrome版本的chromedriver。
  通过chrome:version查看版本,下载chromedriver后解压安装。详细可以参考这个说明。
  selenium安装与chromedriver安装:https:www。cnblogs。comlfrip10542797。html
  我的Chrome版本是:94。0。4606。71(正式版本)(64位),对应文件夹应该放在
  C:ProgramFilesGoogleChromeApplication
  2。分别对应上述思路进行代码编写,安装好模块并调用。
  爬取知乎问题下的所有图片
  fromseleniumimportwebdriver
  importtime
  importurllib。request
  frombs4importBeautifulSoup
  importhtml。parser
  3。自动化打开浏览器并扫码登录知乎,并解析网页HTML信息,查找所有的noscript标签。
  defmain():
  确保文件夹中有chromedriver。exe,有的在C:ProgramFilesx86
  chromedriverC:ProgramFilesGoogleChromeApplicationchromedriver。exe
  driverwebdriver。Chrome(chromedriver)
  time。sleep(5)
  driver。get(https:www。zhihu。comquestion287084175)打开想要爬取的知乎页面
  time。sleep(5)
  模拟用户操作
  defexecutetimes(times):
  foriinrange(times):
  driver。executescript(window。scrollTo(0,document。body。scrollHeight);)
  time。sleep(3)
  try:
  driver。findelementbycssselector(button。QuestionMainAction)。click()
  print(pagestr(i))
  time。sleep(1)
  except:
  break
  执行次数
  executetimes(5)
  原网页的信息
  resultrawdriver。pagesource这是原网页HTML信息
  resultsoupBeautifulSoup(resultraw,html。parser)然后将其解析
  resultbfresultsoup。prettify()结构化原HTML文件
  withopen(D:python安装包PycharmProjectszhihutupianrawresult。txt,w,encodingutf8)asrawresult:存储路径里的文件夹需要事先创建。
  rawresult。write(resultbf)
  rawresult。close()
  print(爬取回答页面成功!!!)
  withopen(D:python安装包PycharmProjectszhihutupiannoscriptmeta。txt,wb)asnoscriptmeta:
  noscriptnodesresultsoup。findall(noscript)找到所有node
  noscriptinnerall
  fornoscriptinnoscriptnodes:
  noscriptinnernoscript。gettext()获取node内部内容
  noscriptinnerallnoscriptinner
  noscriptallhtml。parser。unescape(noscriptinnerall)。encode(utf8)将内部内容转码并存储
  noscriptmeta。write(noscriptall)
  noscriptmeta。close()
  print(爬取noscript标签成功!!!)
  4。查找所有图片并命名下载。
  imgsoupBeautifulSoup(noscriptall,html。parser)
  imgnodesimgsoup。findall(img)
  withopen(D:python安装包PycharmProjectszhihutupianimgmeta。txt,w)asimgmeta:
  count0
  forimginimgnodes:
  ifimg。get(src)isnotNone:
  imgurlimg。get(src)
  linestr(count)imgurl
  imgmeta。write(line)
  urllib。request。urlretrieve(imgurl,D:python安装包PycharmProjectszhihutupianstr(count)。jpg)一个一个下载图片
  count1
  imgmeta。close()
  print(图片下载成功)
  ifnamemain:
  main()
  5。最后进行包括知乎图片的保存。
  最后,有相关爬虫需求欢迎通过公众号联系我们。
  公众号:320科技工作室
投诉 评论

ikbcZ200Pro无线游戏机械键盘,秒杀价格仅需299元ikbc深海Z200Pro键盘,终于降价了,这次幅度还很大。领取满269减110的优惠卷,最终到手价格只要299元。ikbcZ200Pro搭配着深蓝色的基调,让人感觉眼前……安卓手机公认的性价比之王,华为和红米各有一款每个手机品牌都有性价比超群的机型,比较公认的就是华为nova6和红米K40这两部了。首先它们都采用了当年的旗舰处理器,华为nova6是麒麟990、红米K40是骁龙870。……传奇歌唱家王洁实感恩谢莉斯,与平凡女工妻子相爱一生点击关注,每天都有名人故事感动您!青年王洁实与谢莉斯传奇歌唱家王洁实,上世纪80年代红极一时。他与谢莉斯搭档的男女声二重唱,是当时最具盛名的歌唱组合,在歌迷中有着相……Python爬虫面向知乎的答案提取和图片下载需求描述:爬取知乎的答案,爬取并下载一个问题下所有回答中的图片。实现平台:开发工具PyCharm2017,语言版本Python3。6,Chrome谷歌浏览器。基本原……青浦元荡醉美郊野湾,生态水岸线在上海最西端、沪苏交界处有这样一个面积不大的湖荡犹如一块碧绿的翡翠镶嵌在长三角生态绿色一体化示范区它就是醉美郊野湾元荡跟着小编一起去走一走吧!……碳酸锂1年涨价3倍未来石油被这三国瓜分11月初,加拿大工业部突然以国家安全为由,要求中矿公司、盛泽锂业、藏格矿业等三家中国公司,剥离其在加拿大关键矿产公司的投资。它们都属于所谓的锂矿股公司。虽然此项决议并未对……畅听好音质,年货节值得入,天龙HOME150流媒体HiFi音春节也称为中国农历新年,绝对是中国人最具传统文化的一个重大节日,毕竟辛劳了一年大家总是会盼着过年的时候能好好放松休息一下。而每年临近春节全家团聚的日子,作为子女总得给家里长辈准……割韭菜智商税爱国营销请不要给我扣上这样的帽子继我上篇文章《华为Mate50系列何故不再惊艳》,有位头条的友友评论:华为处在生死攸关的危急关头,确实需要这样的友友站出来!不为别的,就因为华为是中国企业……白灼不是简单地水煮来源:【生命时报】北京营养师协会理事、中国注册营养师于仁文在很多人眼中,白灼做起来特别简单把食材放到水里煮熟捞出来调味即可。但事实上,白灼可不是简单地水煮。白灼是传……小米铁大最新进展,凭音乐控制节奏,行走平稳今年8月小米首个全尺寸人形仿生机器人CyberOne正式亮相,身高177cm,体重52kg的它有另一个霸气名称铁大,据了解铁大在发布会上走起路来一摇一晃,步履蹒跚,像极小孩刚学……茅台内部人员爆茅台食堂照,引发热议!网友不来散瓶飞天?生活难,找工作更难!每个为生计奔波的成年人,无不盼望着进入国企、央企,虽说不能大富大贵,但好歹能让自己安安稳稳,衣食无忧的度过一生。尤其像茅台之类的上市国企,更是当……东契奇本季面对勇士球员防守数据对维金斯拿33分对库明加6中1直播吧5月17日讯今日,美媒晒出了东契奇本赛季常规赛面对西决对手勇士各球员防守下的得分与命中率。具体数据如下(包括罚球得分):面对维金斯33分22中10面对卢……
经历俄乌冲突后,你才能看到中国70年来对粮食命脉的布局有多深一、衡量世界大国的新标准:饭碗、油枪、大炮受益于得天独厚的辽阔黑土带,乌克兰尤其盛产小麦、大麦和玉米,素有欧洲粮仓之誉。乌国自独立以来就一直是粮食生产和出口大国,2……手机型号中的ProUltraSEMate都是啥意思?一篇文章如今手机的后缀越来越多,诸如Pro、Ultra、Note、Mate、SE、mini、Max等等之类的词,众多英文词语的加持下,经常会让人看得晕头转向,不知道它们之间究竟有什么差……一个人过得如何,从衣着可以看出文花妖馆没有人不希望自己活得漂亮。所以生活水平越来越高的同时,大部分人都会更加注重衣着打扮。尽管衣着好坏不能完全判断一个人,但人靠衣装马靠鞍,一个人过得如何,……周末突发!虚拟币再现集体闪崩,全网40多万人164亿资金爆仓每经编辑:彭水萍12月4日午间,虚拟货币再现集体闪崩,比特币在午后内狂泻10000美元,24小时跌幅一度超20。据证券时报,最新数据显示,过去24小时内,共有41。……隔夜美股高歌猛进,人民币惊天逆转,为节后A股编新剧本朋友们好,今天是10月4日,国庆长假的第四天;港股、A股相继休市,外围却走出了连续上扬的行情。白天,欧洲股市承接着前一交易日的大好势头,今日继续高开高走,三大股指引领欧洲市场全……中医治疗癌症的误区,你知道吗?现在很多人都知道中医治疗癌症疾病是以毒攻毒的方法。但由于人们对癌症疾病的认识还比较浅,所以用中医治疗癌症会有很大的误区。同时,我们也要提醒癌症患者,在进行中医治疗时,也需要遵医……OPPOPadAir高颜值千元平板性价比最优的选择文Alaia责编吴雅婷总编唐迪作为一款高颜值有实力的入门级平板,娱乐教育二者互不耽误,日常影音娱乐、办公和学习等场景下体验非常顺手。01外观落日沙丘拼接设计,……警惕低价旅游骗局!北京查处多起涉老年旅游团违法违规案件近年来,有不法分子以低价旅游骗局,以不合理的低价甚至免费组织旅游活动,吸引老年人参团,随后在行程中安排各种购物环节,将商品以远高于市场的价格卖给老年人进行牟利。记者从北京……巴拉格利桑德罗曾防死过哈兰德,花了6000万欧签他要给他时间直播吧8月17日讯曼联新赛季开局两连败垫底,红魔夏窗引援利桑德罗马丁内斯遭到了一些媒体和球迷的批评。对此,著名记者巴拉格在社交媒体中为其发声辩护。巴拉格表示:我喜欢开始一……motoX30Pro主摄尺寸惊人大小比肩1元硬币据此前官方确认,此前因某些原因延迟的摩托罗拉新品发布会,将延期到8月11日,结合此前相关信息,本次发布会上摩托罗拉将带来两款骁龙8旗舰手机,分别是一款折叠屏手机motorazr……人老了,到底是应该多运动还是多静养?跳广场舞要注意啥?中老年人每天没事干,忙活了大半辈子当然要好好地享受一下老年生活。不论生活精彩与否,最重要的还是想要一个健康的身体安度晚年。有些中老年人开始锻炼身体,没事干的时候跳跳舞,有些中老……厚葬以明孝,明显陵明代帝陵中前所未有的特殊格局明显陵何以成为世界文化遗产简介明显陵(TheXianlingTomboftheMingDynasty)位于湖北省钟祥市城东北5公里的纯德山上。始建于明正德十四年,迄于明嘉……
友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找