zoukankan      html  css  js  c++  java
  • 爬取简单反爬虫网站实战

    实战一,爬取京东商品


    import requests
    
    url = "https://item.jd.com/27217068296.html"
    
    try:
        r = requests.get(url)
        r.raise_for_status()    #获取爬取失败异常
        r.encoding = r.apparent_encoding
        print(r.text[:1000])
    except:
        print("爬取失败")
    
    

    结果:

    实战二,爬取亚马逊


    • URL更为复杂
    • 有一定的反爬虫措施
    import requests
    
    url = "https://www.amazon.cn/dp/B07746N2J9/459-3461623-5096824?_encoding=UTF8&pf_rd_i=desktop&pf_rd_m=A1AJ19PSB66TGU&pf_rd_p=64065c3b-d3b2-4b04-b0ae-f565f28d2a3e&pf_rd_r=7W3EH45JP9MRMY040XR2&pf_rd_s=Tcg-slide-1&pf_rd_t=36701&ref_=p-Tcg-slide-1--cb755e89-28c8-4498-81e4-3ff3328e7310"
    
    try:
        r = requests.get(url)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        print(r.text[:1000])
    except:
        print("爬取失败")
    
    

    结果:

    • 检查状态编码和返回的信息:

    • 可以从服务器获得信息,说明不是网络的问题。可能是亚马逊对网络爬虫加以限制,所以我们来查看我们给亚马逊服务器发送请求的头部信息:
    • 请注意,服务器返回给我们的头部信息用r.headers查看,查看我们给服务器请求的头部信息要用r.request.headers来查看:

    • 找到了问题所在,原来我们的程序很诚实的告诉了亚马逊服务器,我是一个python requests程序产生的访问,所以被拒绝。
    • 所以我们要让我们的程序模仿浏览器的访问。没错,我们要用到可选字段中的headers

    • 查看我们给服务器请求的头部信息:

    • 查看返回的网页信息:

    • 贴出全部代码:
    import requests
    
    url = "https://www.amazon.cn/dp/B07746N2J9/459-3461623-5096824?_encoding=UTF8&pf_rd_i=desktop&pf_rd_m=A1AJ19PSB66TGU&pf_rd_p=64065c3b-d3b2-4b04-b0ae-f565f28d2a3e&pf_rd_r=7W3EH45JP9MRMY040XR2&pf_rd_s=Tcg-slide-1&pf_rd_t=36701&ref_=p-Tcg-slide-1--cb755e89-28c8-4498-81e4-3ff3328e7310"
    kv = { 'user-agent' : 'Mozilla/5.0' }
    
    try:
        r = requests.get(url,headers = kv)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        print(r.text[:3000])
    except:
        print("爬取失败")
    
  • 相关阅读:
    BZOJ5296 [CQOI2018] 破解D-H协议 【数学】【BSGS】
    Codeforces963C Frequency of String 【字符串】【AC自动机】
    Codeforces962F Simple Cycles Edges 【双连通分量】【dfs树】
    Hello World
    Codeforces963C Cutting Rectangle 【数学】
    BZOJ5203 [NEERC2017 Northern] Grand Test 【dfs树】【构造】
    20160422 --Switch…case 总结; 递归算法
    20160421字符串类型;日期时间类型数学类型
    20160420冒泡排序和查找
    20160419 while练习,复习
  • 原文地址:https://www.cnblogs.com/031602523liu/p/9820088.html
Copyright © 2011-2022 走看看