精华内容
下载资源
问答
  • Python爬虫爬取数据的步骤
    千次阅读
    2020-11-29 14:05:28

    爬虫:

    网络爬虫是捜索引擎抓取系统(Baidu、Google等)的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。

    步骤:

    第一步:获取网页链接

    1.观察需要爬取的多网页的变化规律,基本上都是只有小部分有所变化,如:有的网页只有网址最后的数字在变化,则这种就可以通过变化数字将多个网页链接获取;

    2.把获取得到的多个网页链接存入字典,充当一个临时数据库,在需要用时直接通过函数调用即可获得;

    3.需要注意的是我们的爬取并不是随便什么网址都可以爬的,我们需要遵守我们的爬虫协议,很多网站我们都是不能随便爬取的。如:淘宝网、腾讯网等;

    4.面对爬虫时代,各个网站基本上都设置了相应的反爬虫机制,当我们遇到拒绝访问错误提示404时,可通过获取User-Agent 来将自己的爬虫程序伪装成由人亲自来完成的信息的获取,而非一个程序进而来实现网页内容的获取。

    第二步:数据存储

    1.爬虫爬取到的网页,将数据存入原始页面数据库。其中的页面数据与用户浏览器得到的HTML是完全一样的;

    2.引擎在抓取页面时,会做一定的重复内容检测,一旦遇到访问权重很低的网站上有大量抄袭、采集或者复制的内容,很可能就不再爬行;

    3.数据存储可以有很多方式,我们可以存入本地数据库也可以存入临时移动数据库,还可以存入txt文件或csv文件,总之形式是多种多样的;

    第三步:预处理(数据清洗)

    1.当我们将数据获取到时,通常有些数据会十分的杂乱,有许多必须要的空格和一些标签等,这时我们要将数据中的不需要的东西给去掉,去提高数据的美观和可利用性;

    2.也可利用我们的软件实现可视化模型数据,来直观的看到数据内容;

    第四步:数据利用

    我们可以把爬取的数据作为一种市场的调研,从而节约人力资源的浪费,还能多方位进行对比实现利益及可以需求的最大化满足。

    小结:

    python可以用来爬数据,但是python不是专门用来做爬虫的,Python可以做很多事情。它在做爬虫方面有一定的优势,它写起来比较方便,简洁,爬取速度快,处理cookie,验证码等等爬虫常见问题也方便,是一门很有价值的语言。

    更多相关内容
  • 网络爬虫可以代替手工做很多事情,比如可以用于做搜索引擎,也可以爬取网站上面的图片,比如有些朋友将某些网站上的图片全部爬取下来,集中进行浏览,同时,网络爬虫也可以用于金融投资领域,比如可以自动爬取一些...
  • 主要为大家详细介绍了python爬虫爬取网页表格数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Python爬虫爬取网页数据并存储(一)

    万次阅读 多人点赞 2018-10-27 20:53:48
    Python爬虫爬取京东网页信息并存储环境搭建爬虫基本原理urllib库使用requests库使用正则表达式创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式...

    环境搭建

    1.需要事先安装anaconda(或Python3.7)和pycharm
    *anaconda可在中科大镜像下下载较快
    2.安装中遇到的问题:
    *anaconda(记得安装过程中点添加路径到path里,没添加的话手动添加:
    计算机右键属性——高级系统设置——环境变量——用户/系统变量path路径中,添加 C:\Users\Aurora\Anaconda3;(anaconda安装路径))
    打开jupyter notebook ,出现页面空白解决方案:
    打开 C:\Users\自己的用户名.jupyter\jupyter_notebook_config.py
    在末尾输入以下代码:
    import webbrowser
    webbrowser.register(“Chrome”, None, webbrowser.GenericBrowser(u"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"))
    c.NotebookApp.browser = u’Chrome’
    ##浏览器名,浏览器路径(通过右键属性可以看到路径)

     *anaconda ,打开cmd/anaconda prompt,输入conda list 即可查看已有的包,还需添加可用 conda install package_name 来添加
     在本次网络爬虫过程中,我们需要的库有: re,urllib(这两个库为Python内置库,不需要添加),requests,lxml(anaconda中已存在,Python3.7安装装需要使用pip,下载whl软件),beautifulsoup4,json
    
     *pycharm基础设置问题:
         设置为conda环境下Python3.7
    

    爬虫基本原理

    什么是爬虫?
    爬虫是请求网站并提取数据的自动化程序

    从简单的例子开始:
    我们随便打开一个网站,我们在百度上搜索新闻,右键,审查元素
    在这里插入图片描述
    会得到这样一个响应,点Name那一栏唯一的一个news.baidu.com,我们会发现以下信息:
    在这里插入图片描述
    我们就通过这些html代码来获取信息。
    让计算机代替人工来提取信息就是我们要用Python所要实现的任务。
    所以我们就可以通过以上过程总结爬虫的基本原理
    1.发出请求:即发出一个Request
    2.获取响应内容:如果服务器正常响应就可以得到一个Response
    3.解析内容:得到的内容是HTML,可以用正则表达式,网页解析库进行解析。
    4.保存数据

    urllib库使用

    urllib.request 请求模块

    //简单使用
    import urllib.request
    request = urllib.request.Request('http://www.baidu.com')
    response = urllib.request.urlopen(request)
    print(response.read(),decode('utf-8'))
    

    urllib.error 异常处理模块

    urllib.parse url解析模块

    urllib.robotparser robots.txt解析模块

    (建议用下面的requests库而不使用urllib库)

    requests库使用

    解析json

    //
    import json
    import requests
    response = request.get("http://httpbin.org/get")
    print(response.json())
    
    //添加headers参数(应对一些反爬虫的最简单的方法)
    //以猫眼电影top100为例
     import requests
     url = 'https://maoyan.com/board/4?offset=0'
     headers = {'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
     response = requests.get(url,headers = headers)
     response.encoding = 'utf-8'
    

    正则表达式

    正则表达式
    在这里插入图片描述
    在这里插入图片描述


    一个示例

    import requests
    from requests.exceptions import RequestException
    import re
    import json
    
    def get_one_page(url,headers):
       try:
            response = requests.get(url,headers = headers)
            response.encoding = 'utf-8'
            if response.status_code == 200:
                return response.text
            return None
       except RequestException:
           return None
    
    def parse_one_page(html):
    //提取网页信息的正则表达式
        pattern = re.compile('<dd>.*?board-index.*?>(\d*)</i>.*?data-src="(.*?)".*?name"><a'
                             +'.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)(/p)'
                             +'.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>',re.S)  
        items = re.findall(pattern,html)
        for item in items:
            yield {
                'index':item[0],
                'image': item[1],
                'title': item[2],
                'actor': item[3].strip()[3:],
                'time': item[4].strip()[5:],
                'score': item[5]+item[6]
            }
    //写入result.txt文件中
    def write_to_file(content):
        with open('result.txt', 'a') as f:
            f.write(json.dumps(content) + '\n')
            f.close()
    
    
    def main():
    //猫眼电影爬取需添加headers,从用户角度访问
        url = 'https://maoyan.com/board/4?offset=0'
        user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
        headers = {'User-Agent': user_agent}
        html = get_one_page(url, headers)
        for item in parse_one_page(html):
            print(item)
            write_to_file(item)
    
    
    if __name__ == '__main__':
        main()
    
    

    运行结果:
    在这里插入图片描述
    上述例子为抓取一页信息并存储,若要抓取多页的信息,需要引入Pool模块,用多线程并发抓取,如下构造:

    def main(offset):
        url = 'https://maoyan.com/board/4?offset=0'
        user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
        headers = {'User-Agent': user_agent}
        html = get_one_page(url, headers)
         for item in parse_one_page(html):
            print(item)
            write_to_file(item)
    if __name__ == '__main__':
        p = Pool()
        p.map(main.[i*10 for i in range(10)]       
    
    展开全文
  • python爬虫:爬取动态生成的DOM节点渲染数据结果,该方式不是直接拿到接口进行解析,而是XHR中看不到数据,检查网页又能看到,普通爬虫爬取下来的结果是看不到爬取到的这个数据所在的div的。
  • 这篇文章给大家通过实例讲解了Python爬取网页数据的步骤以及操作过程,有兴趣的朋友跟着学习下吧。 一、利用webbrowser.open()打开一个网站: >>> import webbrowser >>> webbrowser.open('...
  • Python:六步教会你使用python爬虫爬取数据

    万次阅读 多人点赞 2021-11-05 21:09:26
    python爬虫爬取数据真的很简单,只要掌握这六步就好,也不复杂。以前还以为爬虫很难,结果一上手,从初学到把东西爬下来,一个小时都不到就解决了。 python爬出六部曲 第一步:安装requests库和BeautifulSoup...

    前言:

            用python的爬虫爬取数据真的很简单,只要掌握这六步就好,也不复杂。以前还以为爬虫很难,结果一上手,从初学到把东西爬下来,一个小时都不到就解决了。

    python爬出六部曲

    第一步:安装requests库和BeautifulSoup库:

    在程序中两个库的书写是这样的:

    import requests
    from bs4 import BeautifulSoup

    由于我使用的是pycharm进行的python编程。所以我就讲讲在pycharm上安装这两个库的方法。在主页面文件选项下,找到设置。进一步找到项目解释器。之后在所选框中,点击软件包上的+号就可以进行查询插件安装了。有过编译器插件安装的hxd估计会比较好入手。具体情况就如下图所示。

    第二步:获取爬虫所需的header和cookie:

            我写了一个爬取微博热搜的爬虫程序,这里就直接以它为例吧。获取header和cookie是一个爬虫程序必须的,它直接决定了爬虫程序能不能准确的找到网页位置进行爬取。

            首先进入微博热搜的页面,按下F12,就会出现网页的js语言设计部分。如下图所示。找到网页上的Network部分。然后按下ctrl+R刷新页面。如果,进行就有文件信息,就不用刷新了,当然刷新了也没啥问题。然后,我们浏览Name这部分,找到我们想要爬取的文件,鼠标右键,选择copy,复制下网页的URL。就如下图所示。

     复制好URL后,我们就进入一个网页Convert curl commands to code。这个网页可以根据你复制的URL,自动生成header和cookie,如下图。生成的header和cookie,直接复制走就行,粘贴到程序中。

     

    #爬虫头数据
    cookies = {
        'SINAGLOBAL': '6797875236621.702.1603159218040',
        'SUB': '_2AkMXbqMSf8NxqwJRmfkTzmnhboh1ygvEieKhMlLJJRMxHRl-yT9jqmg8tRB6PO6N_Rc_2FhPeZF2iThYO9DfkLUGpv4V',
        'SUBP': '0033WrSXqPxfM72-Ws9jqgMF55529P9D9Wh-nU-QNDs1Fu27p6nmwwiJ',
        '_s_tentry': 'www.baidu.com',
        'UOR': 'www.hfut.edu.cn,widget.weibo.com,www.baidu.com',
        'Apache': '7782025452543.054.1635925669528',
        'ULV': '1635925669554:15:1:1:7782025452543.054.1635925669528:1627316870256',
    }
    headers = {
        'Connection': 'keep-alive',
        'Cache-Control': 'max-age=0',
        'Upgrade-Insecure-Requests': '1',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.6241 SLBChan/25',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
        'Sec-Fetch-Site': 'cross-site',
        'Sec-Fetch-Mode': 'navigate',
        'Sec-Fetch-User': '?1',
        'Sec-Fetch-Dest': 'document',
        'Accept-Language': 'zh-CN,zh;q=0.9',
    }
    params = (
        ('cate', 'realtimehot'),
    )

    复制到程序中就像这样。这是微博热搜的请求头。

    第三步:获取网页:

    我们将header和cookie搞到手后,就可以将它复制到我们的程序里。之后,使用request请求,就可以获取到网页了。

    #获取网页
    response = requests.get('https://s.weibo.com/top/summary', headers=headers, params=params, cookies=cookies)

    第四步:解析网页:

            这个时候,我们需要回到网页。同样按下F12,找到网页的Elements部分。用左上角的小框带箭头的标志,如下图,点击网页内容,这个时候网页就会自动在右边显示出你获取网页部分对应的代码。

     

    如上图所示,我们在找到想要爬取的页面部分的网页代码后,将鼠标放置于代码上,右键,copy到selector部分。就如上图所示。

    第五步:分析得到的信息,简化地址:

            其实刚才复制的selector就相当于网页上对应部分存放的地址。由于我们需要的是网页上的一类信息,所以我们需要对获取的地址进行分析,提取。当然,就用那个地址也不是不行,就是只能获取到你选择的网页上的那部分内容。

    #pl_top_realtimehot > table > tbody > tr:nth-child(1) > td.td-02 > a
    #pl_top_realtimehot > table > tbody > tr:nth-child(2) > td.td-02 > a
    #pl_top_realtimehot > table > tbody > tr:nth-child(9) > td.td-02 > a
    

    这是我获取的三条地址,可以发现三个地址有很多相同的地方,唯一不同的地方就是tr部分。由于tr是网页标签,后面的部分就是其补充的部分,也就是子类选择器。可以推断出,该类信息,就是存储在tr的子类中,我们直接对tr进行信息提取,就可以获取到该部分对应的所有信息。所以提炼后的地址为:

    #pl_top_realtimehot > table > tbody > tr > td.td-02 > a
    

    这个过程对js类语言有一定了解的hxd估计会更好处理。不过没有js类语言基础也没关系,主要步骤就是,保留相同的部分就行,慢慢的试,总会对的。

    第六步:爬取内容,清洗数据

    这一步完成后,我们就可以直接爬取数据了。用一个标签存储上面提炼出的像地址一样的东西。标签就会拉取到我们想获得的网页内容。

    #爬取内容
    content="#pl_top_realtimehot > table > tbody > tr > td.td-02 > a"

    之后我们就要soup和text过滤掉不必要的信息,比如js类语言,排除这类语言对于信息受众阅读的干扰。这样我们就成功的将信息,爬取下来了。

    fo = open("./微博热搜.txt",'a',encoding="utf-8")
    a=soup.select(content)
    for i in range(0,len(a)):
        a[i] = a[i].text
        fo.write(a[i]+'\n')
    fo.close()

    我是将数据存储到了文件夹中,所以会有wirte带来的写的操作。想把数据保存在哪里,或者想怎么用,就看读者自己了。

    爬取微博热搜的代码实例以及结果展示:

    import os
    import requests
    from bs4 import BeautifulSoup
    #爬虫头数据
    cookies = {
        'SINAGLOBAL': '6797875236621.702.1603159218040',
        'SUB': '_2AkMXbqMSf8NxqwJRmfkTzmnhboh1ygvEieKhMlLJJRMxHRl-yT9jqmg8tRB6PO6N_Rc_2FhPeZF2iThYO9DfkLUGpv4V',
        'SUBP': '0033WrSXqPxfM72-Ws9jqgMF55529P9D9Wh-nU-QNDs1Fu27p6nmwwiJ',
        '_s_tentry': 'www.baidu.com',
        'UOR': 'www.hfut.edu.cn,widget.weibo.com,www.baidu.com',
        'Apache': '7782025452543.054.1635925669528',
        'ULV': '1635925669554:15:1:1:7782025452543.054.1635925669528:1627316870256',
    }
    headers = {
        'Connection': 'keep-alive',
        'Cache-Control': 'max-age=0',
        'Upgrade-Insecure-Requests': '1',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.6241 SLBChan/25',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
        'Sec-Fetch-Site': 'cross-site',
        'Sec-Fetch-Mode': 'navigate',
        'Sec-Fetch-User': '?1',
        'Sec-Fetch-Dest': 'document',
        'Accept-Language': 'zh-CN,zh;q=0.9',
    }
    params = (
        ('cate', 'realtimehot'),
    )
    #数据存储
    fo = open("./微博热搜.txt",'a',encoding="utf-8")
    #获取网页
    response = requests.get('https://s.weibo.com/top/summary', headers=headers, params=params, cookies=cookies)
    #解析网页
    response.encoding='utf-8'
    soup = BeautifulSoup(response.text, 'html.parser')
    #爬取内容
    content="#pl_top_realtimehot > table > tbody > tr > td.td-02 > a"
    #清洗数据
    a=soup.select(content)
    for i in range(0,len(a)):
        a[i] = a[i].text
        fo.write(a[i]+'\n')
    fo.close()

     

    展开全文
  • 首先我选取的爬取数据是所有季度参演过的嘉宾然后检查网页代码,找到要爬取数据那部分,这里需要爬取的是table标签 我用的是jupyter notebook写的代码,设置url与Headers,先写一个爬取下来数据保存到json文件的...

    首先我选取的爬取数据是所有季度参演过的嘉宾在这里插入图片描述然后检查网页代码,找到要爬取的数据那部分,这里需要爬取的是table标签在这里插入图片描述

    我用的是jupyter notebook写的代码,设置url与Headers,先写一个爬取下来数据保存到json文件的方法

    在这里插入图片描述
    在这里插入图片描述这里可能会遇到一些问题,列表里单引号和双引号要搞清楚
    运行结果:在这里插入图片描述

    接下来是一个自动爬取明星图片的方法(通过读取json文件中保存的’link’数据,即明星的百度百科链接,来进行图片的自动下载保存)

    在这里插入图片描述
    运行结果:
    在这里插入图片描述

    接着根据爬取的数据做了几个图表:

    在这里插入图片描述**

    ## 运行结果:

    **
    在这里插入图片描述

    在这里插入图片描述

    比较好奇哪个明星出场次数最多,就又写了个,可惜后来才发现table里本来就爬下来了。。林更新5次
    在这里插入图片描述

    数据可视化:

    在这里插入图片描述
    运行结果:在这里插入图片描述
    代码可能截图不全,参考为主,哪里不全可以找我发

    展开全文
  • 打开某个网页,按F12—Network— 任意点一个网址可以看到:Headers—Request Headers中的关键词User-Agent用来识别是爬虫还是浏览器。 import urllib.request\nurl='http://weibo.com/tfwangyuan?is_hot=1' headers=...
  • 在使用python爬虫技术采集数据信息时,经常会遇到在返回的网页信息中,无法抓取动态加载的可用数据。例如,获取某网页中,商品价格时就会出现此类现象。如下图所示。本文将实现爬取网页中类似的动态加载的数据。 1...
  • python爬虫爬取网页内容

    千次阅读 2021-10-17 22:07:58
    2.将需要爬取网页的网址复制粘贴。 3.从网络上获取网页内容(爬取过程中加上头信息), 假如有反爬虫机制,则需要用header进行伪装 (如何寻找header:1.网页、右键、查看源代码 2.网页、右键、network、名称、...
  • 提供代码框架,读者们稍作修改就可以用了,本文爬取的是某舆情热门事件的发文ID、点赞数、转发数、评论量
  • 萌新:使用xpath和正则表达式解析网页内容 代码如下: import sqlite3 import re import requests from lxml import html findlink = re.compile(r'<a href="(.*?)"') # 创建正则表达式对象,表示规则(字符串的...
  • 一个简单的python示例,实现抓取 嗅事百科 首页内容 ,大家可以自行运行测试
  • python爬取网页的表格内容, 并存入csv文件, 网页地址:http://app.finance.ifeng.com/data/stock/yjyg.php?symbol=000001
  • Python爬虫爬取数据

    千次阅读 2021-10-16 20:08:00
    我是Python小白,我会用比较通俗易懂的方法告诉你如何去爬取数据。 一开始,我们需要pycharm(也就是我们编代码的工具),其次我们需要打开我们需要爬取数据网页,我以京东鞋子为例。 那么,接下来就开始吧 ...
  • Python爬虫学习-简单爬取网页数据

    千次阅读 2021-08-11 19:58:28
      这是一篇介绍如何用Python实现简单爬取网页数据并导入MySQL中的数据库的文章。主要用到BeautifulSoup requests 和 pymysql。   以网页https://jbk.39.net/mxyy/jbzs/为例,假设我们要爬取的部分数据如下图所示...
  • 网络编程背景下的爬虫强调自动化,通过 Python 编程实现自动爬取资源,从而减少人力资源与精力消耗,提高效率。这篇文章将通过虚构的求职网站 Fake Python 以及使用 Lightly 展示完整的项目代码,动手在浏览器中编写...
  • python爬虫爬取百度云盘资源,输入关键字直接在主奥面生成网址
  • 使用selenium加载网页,回去网页源代码,爬取天天基金网站基金排行,并存储在MongoDB和txt几十本中。
  • Python爬虫爬取动态网页

    万次阅读 多人点赞 2018-05-01 20:05:54
    Python modules:requests、random、jsonBackground:对于静态网页,我们只需要把网页地址栏中的url传到get请求中就可以轻松地获取到网页数据。但是,我们经常会遇到直接把网页地址栏中的url传到get请求中无法直接获...
  • python爬虫爬取天气数据并图形化显示

    万次阅读 多人点赞 2019-10-02 19:02:07
    使用python进行网页数据爬取现在已经很常见了,而对天气数据的爬取更是入门级的新手操作,很多人学习爬虫都从天气开始,本文便是介绍了从中国天气网爬取天气数据,能够实现输入想要查询的城市,返回该城市未来一周...
  • Python 爬虫爬取多页数据

    千次阅读 2020-11-21 00:50:38
    但是,按照常规的爬取方法是不可行的,因为数据是分页的:最关键的是,不管是第几页,浏览器地址栏都是不变的,所以每次爬虫只能爬取第一页数据。为了获取新数据的信息,点击F12,查看页面源代码,可以发现数据是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,130
精华内容 19,252
关键字:

python爬虫爬取网页数据