美文网首页python_爬虫
Requests 库爬虫实例

Requests 库爬虫实例

作者: 汪小鱼 | 来源:发表于2021-10-07 07:56 被阅读0次

    实例1:京东商品页面的爬取 http://item.jd.com/2967929.html

    import requests
    url = "http://item.jd.com/2967929.html" 
    try: 
        r = requests.get(url)
        r.raise_for_status()
        r.encoding = r.apparent_encoding 
        print(r.text[:1000]) 
    except: 
        print("爬取失败")
    

    r.text 返回的是一个字符串,对于有些网站, 爬下来的字符串很长,没必要全部显示出来,所以用 r.text[:1000] 截取它前 1000 个字符。


    实例2:亚马逊商品页面的爬取

    import requests
    def getHTTPText (url): 
        kv = {'User-agent':'Mozilla/5.0'}
        r = requests.get(url,headers=kv)
        r.raise_for_status()
        r.encoding = r.apparent_encoding 
        print(r.text) 
    if __name__=='__main__': 
        url = "http://www.amazon.cn/gp/product/B01M8L5Z3Y" 
        getHTTPText(url)
    

    爬虫的请求头:

    {'User-Agent': 'python-requests/2.20.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}

    这样的获取请求很容易被识别,通过 get() 方法和 headers 参数定制 HTTP 请求头。一般连接失败但通过 r.text 仍能获取内容,即可以判定网络部分没有问题。

    修改后的请求头:

    {'User-agent': 'Mozilla/5.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}


    实例3:百度360搜索关键词提交

    搜索引擎关键词提交接口
    百度的关键词接口:http://www.baidu.com/s?wd=keyword
    360的关键词接口:http://www.so.com/s?q=keyword

    import requests
    url = input('请输入网址>>>')
    keyword = input('请输入关键词:')
    kv = {'wd': keyword} 
    try: 
        r = requests.get(url, params=kv) 
        print('爬取内容网址:', r.request.url)
        r.raise_for_status() 
        print('目标内容的长度:',len(r.text)) 
    except: 
        print('爬取失败!')
    

    实例4:网络图片的爬取和存储

    网络图片链接的格式:http://www.example.com/picture.jpg

    import requests
    ch = 'Y' 
    path = 'D:/abc.jpg' 
    def getJPG(url): 
        r = requests.get(url) 
        with open(path, 'wb') as file: 
            file.write(r.content) 
            print('图片已存入', path) 
    while ch=='Y': 
        # (ch=='y')?ch-32:ch 
        url = input('请输入图片地址>>>')
        getJPG(url) 
        print("是否继续爬取(Y/N)?", end='')
        ch = input() 
        if ch=='y': ch = 'Y' 
    f.close()
    

    只能存一张图片,因为程序并没有修改文件名。后面的图片会对前面的图片进行覆盖。

    import requests 
    import os
    
    url = "https://www.ustc.edu.cn/_upload/article/images/e7/ea
    /cf814a78401fa7175c3974169316/7ca83638-6e7b-469a-839a-5e15b63ce427.jpg" 
    root = "D://pics//" path = root + url.split('/')[-1] #获取网络图片名称
    try: 
        if not os.path.exists(root): os.mkdir(root) 
        if not os.path.exists(path): 
            r = requests.get(url) 
            with open(path,'wb') as f: 
                f.write(r.content)
                f.close() 
                print('文件保存成功!') 
        else: 
            print('文件已存在') 
    except: 
        print('爬取失败!')
    

    实例5:IP地址归属地的自动查询

    import requests
    
    url = 'http://www.ip38.com/ip.php?ip=' 
    IPaddress = input('请输入IP地址:') 
    try: 
        r = requests.get(url + IPaddress)   
        print('目标网站:',r.request.url)
        r.raise_for_status()
        r.encoding = r.appparent_encoding
        print(r.text[-500:]) 
    except: 
        print('爬取失败!')
    

    我们在网站上看到的人机交互方式,例如文本框、需要点击按钮的。在正式向后台服务器提交的时候,都是以链接的形式来提交的。我们需要通过浏览器的解析知道向后台提交的链接形式,将人工交互形式转换为我们能够操作的形式。

    相关文章

      网友评论

        本文标题:Requests 库爬虫实例

        本文链接:https://www.haomeiwen.com/subject/mpnwnltx.html