关于网络采集_网络爬虫与数据收集 的知识大家了解吗?以下就是小编整理的关于网络采集_网络爬虫与数据收集 的介绍,希望可以给到大家一些参考,一起来了解下吧!

*** 收集( *** 爬虫和数据收集)


【资料图】

无论是数据分析、数据建模甚至是数据挖掘,在做这些高层次的工作之前,我们都要收集数据。数据是数据工作的基础,没有数据,挖掘就没有意义。俗话说,巧妇难为无米之炊,接下来就说说爬虫吧。

爬虫是收集外部数据的重要方式。它经常用于竞争分析,但也在自己的业务爬虫使用。比如搜索引擎就是爬虫的更高应用。当然,爬虫也不能肆无忌惮。一不小心就可能变成监狱导向的编程。

1.什么是爬行动物?

爬虫,一般针对特定的网站或App,通过爬虫脚本或程序从指定的页面收集数据。是指通过编程向 *** 服务器请求数据(HTML形式),然后解析HTML提取你想要的数据。

一般来说,爬虫需要掌握一门编程语言。要了解HTML、web服务器、数据库等知识,建议从python入手,可以快速上手爬虫。有很多第三方类库可以快速方便的抓取网页。

二、如何抓取网页

1.首先,分析网页。

点击F12,调出网页调试界面,在元素页签下可以看到相应的HTML代码。这些其实是网页的代码。网页通过解析hmtl等源代码,加载渲染,展现给大家,就像你打扮好了一样(手动滑稽)。

我们可以定位网页元素。左上角有一个小按钮。点击它,在网页上找到你想要定位的地方,就可以直接在这里定位源代码,如下图所示:

我们可以修改源代码,把定位的源代码【python】改成【我是帅哥】。呵呵,网页上会有不同的变化。以上主要用于科普,这个主要是前端工程师的领域。你看到的地方都是前端工程师的辛苦,冰山下面的地方都是后端工程师的地盘。

有点跑题了。回到正题,网页已经解析完毕,你可以定位你要抓取的元素的内容。接下来,您可以切换包并编写爬虫脚本。你可以抓取你在基本网页上看到的所有内容。所见即所得。

2.程序如何访问网页?

你可以点击 *** 按钮,在浏览器搜索输入框中输入一个关键词,看看我们在python中经历了什么。涉及的专业内容可能太复杂了。你感受到的可能是我输入了一个关键词,网页给我返回了很多内容。其实中间是本地客户端向服务器发送get请求,服务器解析内容,中间经过TCP三次握手,四次挥手,最后将内容安全返回给你的本地客户端。你有没有觉得你的头有点大了?为了我们开心的上网,工程师真的没有

了解这些内容有助于我们理解爬虫的机制。简单来说就是模拟人登录一个网页,请求访问,找到返回的网页内容并下载数据的程序。刚才说到网页 *** 的内容,有两个常见的请求:get和post。GET请求在URL上公开请求参数,而POST请求将参数放在请求体中。POST请求还加密密码参数,这使得它相对安全。

为了模拟访问的请求头,当我们发出http请求时,我们不仅要提交一些参数,还要定义请求的一些头信息,如Accept、Host、cookie、User-Agent等。,这主要是将爬虫伪装成获取信息内容的正式请求。

爬行动物有点像间谍,闯入当地内部,取出我们想要的信息。这里很难理解,skr~~~

3.接收请求返回的信息

r=requests.get("https://httpbin.org/get")r.status_code//返回200r.headers{"content-encoding":"gzip","transfer-encoding":"chunked","connection":"close","server":"nginx/1.0.4","x-runtime":"148ms","etag":""e1ca502697e5c9317743dc078f67693f"","content-type":"application/json"}importrequestsr=requests.get("https://api.github.com/events")r.json()//以上操作可以算是最基本的爬虫了,返回内容如下:[{u"repository":{u"open_issues":0,u"url":"https://github.com/...

您可以通过解析返回的json字符串来获得所需的数据。恭喜~

三、python自动爬虫实战

接下来我们来一场豆瓣电影排名的爬虫大战:

#!/usr/bin/envpython3#-*-coding:utf-8-*-"""CreatedonWedJul3115:52:532019@author:kaluosi"""importrequestsimportreimportcodecsfrombs4importBeautifulSoupfromopenpyxlimportWorkbookimportpandasaspdwb=Workbook()dest_filename="电影.xlsx"ws1=wb.activews1.title="电影top250"DOWNLOAD_URL="http://movie.douban.com/top250/"defdownload_page(url):"""获取url地址页面内容"""headers={"User-Agent":"Mozilla/5.0(Macintosh;IntelMacOSX10_11_2)AppleWebKit/537.36(KHTML,likeGecko)Chrome/47.0.2526.80Safari/537.36"}data=requests.get(url,headers=headers).contentreturndatadefget_li(doc):soup=BeautifulSoup(doc,"html.parser")ol=soup.find("ol",class_="grid_view")name=[]#名字star_con=[]#评价人数score=[]#评分info_list=[]#短评foriinol.find_all("li"):detail=i.find("div",attrs={"class":"hd"})movie_name=detail.find("span",attrs={"class":"title"}).get_text()#电影名字level_star=i.find("span",attrs={"class":"rating_num"}).get_text()#评分star=i.find("div",attrs={"class":"star"})star_num=star.find(text=re.compile("评价"))#评价info=i.find("span",attrs={"class":"inq"})#短评ifinfo:#判断是否有短评info_list.append(info.get_text())else:info_list.append("无")score.append(level_star)name.append(movie_name)star_con.append(star_num)page=soup.find("span",attrs={"class":"next"}).find("a")#获取下一页ifpage:returnname,star_con,score,info_list,DOWNLOAD_URL+page["href"]returnname,star_con,score,info_list,Nonedefmain():url=DOWNLOAD_URLname=[]star_con=[]score=[]info=[]whileurl:doc=download_page(url)movie,star,level_num,info_list,url=get_li(doc)name=name+moviestar_con=star_con+starscore=score+level_numinfo=info+info_list#pandas处理数据c={"电影名称":name,"评论人数":star_con,"电影评分":score,"评论":info}data=pd.DataFrame(c)data.to_excel("豆瓣影评.xlsx")if__name__=="__main__":main()

写在最后

最后,本文中的爬虫仅限于通信。

关键词: