汇总:如何采集网站数据(如何快速抓取网页上的数据)

优采云 发布时间: 2022-11-24 06:11

  汇总:如何采集网站数据(如何快速抓取网页上的数据)

  oooo971227

  优势:

  专注内容引流,精准营销获客!

  温馨提示:

  请说是在【小痞子】的网站上看到的。

  How to collect website data(如何快速抓取网页数据)

  无论是数据分析、数据建模甚至数据挖掘,我们都必须在做这些高级任务之前采集

数据。数据是数据工作的基础。没有数据,挖掘就没有意义。俗话说巧妇难为无米之炊,那么接下来我们就来说说爬行动物吧。

  爬虫是采集

外部数据的重要方式。常用于竞争分析,部分爬虫也作为自己的业务使用。比如搜索引擎是爬虫应用最多的。当然,爬虫也不是无良,一不小心就可能变成面向监狱的编程。

  1、什么是爬虫?

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

  一般来说,爬虫需要掌握一门编程语言,以及HTML、Web服务器、数据库等方面的知识。建议从python入手,可以快速上手爬虫,还有很多第三方库可以快速上手并轻松执行网络爬虫。

  

" />

  2、如何抓取网页

  1.首先分析网页

  按F12调出网页调试界面,可以在Element标签下看到对应的HTML代码。这些实际上是网页的代码。网页通过hmtl等源码解析,通过loading和rendering呈现如你所见。,就像你穿衣服化妆一样(手动滑稽)。

  我们可以定位网页的元素。左上角有个小按钮。单击它并在网页上找到您要定位的位置。可以直接在这里定位源码,如下图:

  我们可以修改源码看看,把定位到的源码【python】改成【我是帅哥】。哎,网页上会发生不同的变化。以上主要是为了科普。这主要是前端工程师的领域。你看到的都是前端的心血,而冰山之下是后端工程师的领地。

  有点跑题了,言归正传,网页已经解析完毕,可以定位到你要爬取的元素内容了。接下来就是修改包,写爬虫脚本了。基本上网页上能看到的都可以爬取。你所看到的就是你得到的。

  2、程序如何访问网页

  大家可以点击网络按钮,看看我们在浏览器搜索输入框中输入一个关键词:python时的体验。涉及的专业内容可能过于复杂。你可能会觉得我输入一个关键词,网页给我返回了很多内容。其实就是本地客户端向服务端发送get请求,服务端解析内容。,经过三次TCP握手,四次挥手,网络安全,加密等等,最后安全的把内容返回给你本地的客户端,是不是感觉头开始有点大了,这样我们就可以愉快的上网络冲浪,工程师真的不容易~~

  理解这些内容,有助于我们理解爬虫的机制。简单来说,就是模拟人登录网页,请求访问,找到返回的网页内容,下载数据的程序。刚才提到了网页网络的内容,常见的请求有两种:get和post。GET 请求将请求参数暴露在 URL 上,而 POST 请求参数则放在请求体中。POST 请求方法还对密码参数进行了加密。,相对安全。

  

" />

  程序需要模拟请求头(Request Header)进行访问。我们在进行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'    }import requestsr = requests.get('https://api.github.com/events')r.json()// 以上操作可以算是最基本的爬虫了,返回内容如下:[{u'repository': {u'open_issues': 0, u'url': 'https://github.com/...

  通过解析返回的json字符串,可以得到想要的数据,恭喜~

  三、Python自动化爬虫实战

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

  #!/usr/bin/env python3# -*- coding: utf-8 -*-"""Created on Wed Jul 31 15:52:53 2019@author: kaluosi"""import requestsimport reimport codecsfrom bs4 import BeautifulSoupfrom openpyxl import Workbookimport pandas as pd wb = Workbook()dest_filename = '电影.xlsx'ws1 = wb.activews1.title = "电影top250"DOWNLOAD_URL = 'http://movie.douban.com/top250/'def download_page(url):    """获取url地址页面内容"""    headers = {        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36'    }    data = requests.get(url, headers=headers).content    return datadef get_li(doc):    soup = BeautifulSoup(doc, 'html.parser')    ol = soup.find('ol', class_='grid_view')    name = []  # 名字    star_con = []  # 评价人数    score = []  # 评分    info_list = []  # 短评    for i in ol.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'})  # 短评        if info:  # 判断是否有短评            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')  # 获取下一页    if page:        return name, star_con, score, info_list, DOWNLOAD_URL + page['href']    return name, star_con, score, info_list, Nonedef main():    url = DOWNLOAD_URL    name = []    star_con = []    score = []    info = []    while url:        doc = download_page(url)        movie, star, level_num, info_list, url = get_li(doc)        name = name + movie        star_con = star_con + star        score = score + level_num        info = info + info_list    #pandas处理数据    c = {'电影名称':name , '评论人数':star_con , '电影评分':score , '评论':info}    data = pd.DataFrame(c)    data.to_excel('豆瓣影评.xlsx')if __name__ == '__main__':    main()

  写在最后

  最后,本文爬虫仅限于交流学习。

  全行业全网霸屏引流推广

  专注内容引流,精准获客

  汇总:什么是网站采集

  网站管理员从互联网上采集

各种图片、笑话、新闻、技术等信息,然后进行分类、编辑,发布到自己的网站系统中。站长一般通过搜索引擎搜索各种关键词,得到目标网址,然后提取网页中的内容。关键字的组织决定了捕获内容的准确性和数量。由于内容来自不同的站点,因此提取内容的方法也不同。对于某一类信息,发布到网站系统的数据结构是相同的。

  

" />

  网站管理员搜索站点,在主页上安排和索引相关内容。

  企业从互联网上搜索电子邮件和电话号码,并能够查看与该信息相关的信息,以了解对象的基本情况。企业希望能够搜索到某一类别的客户信息,比如客户是女性,年龄在20到30岁之间等等。并且可以将采集到的对象信息保存到企业内部的客户管理系统中。

  

" />

  企业需要了解某个产品的信息,希望得到该类产品的报价、生产厂家等,以及这些信息的对比。您还可以从制造商处获得报价和更多信息。希望这些信息可以存储在企业内部的ERP系统或其他系统中。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线