BB:作为入门爬虫的新手,这些天在网上找一些案例自己动手实现以下并添加自己的东西进去。
这个案例不太复杂,用到的有re、json、requests、pandas库
简单介绍下这几个库的作用:
re(regular expression):它就是正则表达,用来解析html页面的信息。
常用方法:
re.complie(pattern) 一个字符串编译为字节代码,返回一个Pattern object.pattern:你想匹配到的正则表达式,相当于样式;
re.findall(pattern, string) 在指定的字符串中找到要匹配的信息,返回 list列表。string:字符串类型,是你要在哪里进检索;
re.sub(pattern, repl, string) 用repl替换string中的符合pattern表达式的信息。
json(JavaScript Object Notation):使用json模块可以轻松解析包含JSON对象的JSON字符串和文件
json.load:读取包含JSON对象的文件
json.loads:将一个json串还原成python对象
requests:向服务器发送请求
request.get(url,headers)
pandas:数据分析包
pandas.read_csv():读取csv文件
首先明白要爬取些什么内容?
你搜索一个问题时会有很多相关的很多问题,我将问题简化为:获取某一个问题的所有回答者的基本信息以及在该问题下的回答内容。就是这些东西:
怎样才能获取这些信息呢?这些信息都镶嵌在html页面中,在你下滑浏览其他回答时,会不断向服务器发送各种请求,里边有一种是我们比较感兴趣的,那就是jason数据。
1.找到你想要爬取的问题,进入页面,打开开发者模式,刷新页面
2.点击Network,选中XHR
3.在你下滑滚动条看其他回答时,发现不断有request出现,我们要找的数据在name为:answers?...的jason数据中,找不到的话,Ctrl+F,自行查找。
点击后是它的相关信息,其中General中的RequestURL里面的信息是我们想要的,可以把它打开它观察一下。
点击Previews,可以看到包含data,paging两个”大字典”,data中有5个“小字典“,所以说每次会出现5个回答。paging中totals记录的是当前话题下有多少回答。
我们随便打开一个data中的内容,author记录的回答者的信息,有name、gender(1:男,0:女,-1:无)、voteup_count:赞数、comment_count:评论数量。在content中是回答内容。
现在数据的藏身之处找到后,就开始搞他了