zoukankan      html  css  js  c++  java
  • Python简单爬虫

    本博客主要用来记录一下学习过程中所使用的代码:
    我们以豆瓣电影网为例子,来爬取上面的数据:
    链接:豆瓣电影

    import requests
    url="https://movie.douban.com/"
    resp=requests.get(url)
    resp.encoding="utf-8"
    #print(resp.text)
    f=open("douban.html","w")
    f.write(resp.text)
    print("over")
    resp.close()#关闭会话,防止后续使用爬虫出现无法访问的情况
    

    以上是一个非常基本并且简单的爬取网页源代码的爬虫。
    但是我们可以发现爬取下来在douban.html中是没有任何东西的,所以这个时候我们大概率是被监测到不是人工在进行网页的访问,而是自动化程序,这个时候就需要我们进行伪装一下,最基础的伪装就是User Agent的伪装,查看我们自己的UA需要使用浏览器自带的抓包工具,按下F12,然后在Network选项中重新刷新网页,在抓获的包中,我们就能够获得我们想要的UA信息

    import requests
    url="https://movie.douban.com/"
    #反爬可以在这里加一个头
    dic={# 这里dic代表的时请求头,是一个字典变量
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 Edg/92.0.902.62"
    }
    #然后下面的请求改一下就可以了
    resp=requests.get(url,headers=dic)
    #resp=requests.get(url)
    resp.encoding="utf-8"# windows系统必须加这个否则读取中文的时候可能会出现乱码的情况
    #print(resp.text)
    f=open("douban.html","w",encoding="utf-8")#windows系统一定要写encoding="utf-8"
    f.write(resp.text)
    print("over")
    resp.close()#关闭会话,防止后续使用爬虫出现无法访问的情况
    

    这个时候我们加入了这些以后,可以发现我们可以正常爬取东西了。

    同理如果我们要像浏览器传入数据然后爬取相应的内容,我们也同上,首先先用浏览器自带的抓包工具检查所发送包中的变量名称,然后将这些变量存在一个新建的字典中,最后在调用request.get的时候将这个字典赋值给data,就可以实现查询我们想要查询的东西了,具体实现方法见如下代码:

    import requests
    url="输入目标网址"
    #反爬可以在这里加一个头
    dic={# 这里dic代表的时请求头,是一个字典变量
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36 Edg/92.0.902.62"
    }
    dat={
        "输入变量1名称": "输入变量1的值",
        "输入变量2名称": "输入变量2的值"
    #·········
    }
    #然后下面的请求改一下就可以了
    resp=requests.get(url,headers=dic,data=dat)
    #resp=requests.get(url)
    resp.encoding="utf-8"# windows系统必须加这个否则读取中文的时候可能会出现乱码的情况
    #print(resp.text)
    f=open("douban.html","w",encoding="utf-8")#windows系统一定要写encoding="utf-8"
    f.write(resp.text)
    print("over")
    resp.close()
    
  • 相关阅读:
    设计模式之简单数据工厂
    Linux CPU affinity
    QT操作Excel(通过QAxObject使用了OLE,前提是本地安装了Excel)
    QT 4.2.2的安装(安装完还要再编译,注意设置Windows Path)
    你要看透的56条人生哲理(还可以)
    提升Delphi编程效率必须使用的快捷键(Delphi2007版本)
    Delphi中复制带有String的记录结构时不能使用Move之类的内存操作函数
    普林斯顿大学算法公开课(1)----介绍
    iOS7 初体验
    SQL Server 性能优化之——系统化方法提高性能
  • 原文地址:https://www.cnblogs.com/mudrobot/p/15098419.html
Copyright © 2011-2022 走看看