zoukankan      html  css  js  c++  java
  • 【Python】从0开始写爬虫——小试身手

    先写个demo获取数据,我不会做太多介绍,基本上都会写在注释里。

    header 的数据一般就是在浏览器的调试工具里,有的网站访问需要登陆,就要加cookie。像Chrome的调试工具 快捷键是F12. 去到新浪首页,按F12调出开发者工具,然后刷新。在Network下拉到最上面就能看到一开始的请求信息(我之前是做java web的,略微会一点。)

    import urllib.request
    
    header = {
        'User-Agent':
            'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',
    }
    url = "http://www.sina.com"
    
    request = urllib.request.Request(url=url, headers=header)  # url为爬取的链接,headers主要是假装我们不是爬虫,现在我们就假装我们是个Chrome浏览器
    
    response = urllib.request.urlopen(request)  # 请求数据
    
    data = response.read()  # 读取返回的数据
    
    data.decode("UTF-8")  # 设置字符格式为utf-8,可以处理中文

    然后控制台会打印出一段html,就是新浪的首页,数据太多就不发了,发一部分截图。

    然后我们用BeautifulSoup试着解析一下。

    先导入BeautifulSoup, 一般都是加在最上面

    import urllib.request
    from bs4 import BeautifulSoup

    然后在最后面把 print(data) 那句去掉加上

    soup = BeautifulSoup(data, "html.parser")  # 把html转换成BeautifulSoup对象,这样我们就可以用BeautifulSoup的方法来解析html

    print(soup) # 打印

    控制台输出如下

    然后我们可以

    print(soup.title)  # 打印标题
    
    print(soup.find_all("a"))  # 打印所有a标签

    控制台输出, 因为find_all("a")  会找出所有的a标签,所以输出很多

    现在就得去了解BeautifulSoup更多的知识,以便我们能更加快速得获取我们想要得信息。

    忘了贴一下完整的代码

    import urllib.request
    from bs4 import BeautifulSoup
    
    header = {
        'User-Agent':
            'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'
    }
    url = "http://www.sina.com"
    
    request = urllib.request.Request(url=url, headers=header)  # url为爬取的链接,headers主要是假装我们不是爬虫,现在我们就假装我们是个Chrome浏览器
    
    response = urllib.request.urlopen(request)  # 请求数据
    
    data = response.read()  # 读取返回的数据
    
    data.decode("UTF-8")  # 设置字符格式为utf-8,可以处理中文
    
    soup = BeautifulSoup(data, "html.parser")  # 把html转换成BeautifulSoup对象,这样我们就可以用BeautifulSoup的方法来解析html
    
    print(soup.title)  # 打印标题
    
    print(soup.find_all("a"))  # 打印所有a标签
    欢迎访问我的个人博客站点: https://yeyeck.com
  • 相关阅读:
    查询详细信息和删除记录
    软件开发过程中常用到的一些工具
    无服务器端的UDP群聊功能剖析(WCF版)
    vim插件使用
    C#中ConnectionStrings和AppSettings的区别
    《Effective C++》简明笔记上
    设计模式的一些所想所得
    对RESTful Web API的理解与设计思路
    js加载脚
    OSGi.NET 学习笔记 [模块可扩展支持][概念][实例]
  • 原文地址:https://www.cnblogs.com/yeyeck/p/9392618.html
Copyright © 2011-2022 走看看