zoukankan      html  css  js  c++  java
  • 爬虫超级简单入门

    前两天看到 某个程序猿写了个爬虫,然后公司200多人被端, 作为在入门python 的小白, 产生了兴趣,于是乎学习了下,写了一个小爬虫,做一些入门的抓爬,爬点美女图片吧 !

    let's do it

     看一眼美女,写代码的兴致就上来了

    爬虫是通过找到要爬的图片的url 然后进行下载, 这个url怎么找呢?

    写过网页的应该都知道, 但是我没写过,我们打开网页后按F12弹出调试工具

     选择network,在左侧选择一个有Request Headers 的

    然后可以看到有 Referer, 字面意思是引用, 在此处是用来防止跨域请求,(我的理解是只能通过该网页,来获取左侧选择的文件 也就是这个页面上的元素),一会我们的请求头要用到

    User-Agent: 用户代理,里面发现有Chrome这个单词,猜测是浏览器,于是换个火狐试了下 里面有Firefox, 这应该是浏览器代理  每个浏览器不同,我们用这个来伪装成浏览器访问

    headers = {
        'Referer':'https://www.85814.com/meinv/gaotiaomeinv/',
        'User-Agent':'ozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36'
    }

     我们把它放到一个字典中,因为后面类型要求是字典

    接着用Request库连接下网站

    import requests
    headers = {
        'Referer':'https://www.85814.com/meinv/gaotiaomeinv/',
        'User-Agent':'ozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36'
    }
    
    url = 'https://www.85814.com/meinv/gaotiaomeinv/'
    resp = requests.get(url,headers=headers)
    pass

     

     

    可以看到 Response 为 200  表示连接上了

     

    很好

     

    下一步我们就要获取图片的url了, 点击开发工具左上角的元素审查,然后点击一张图

    可以看到,img 的alt属性对于图的标题, src就是图片的源地址,可以复制出来,在进入这个网站试试。

    多试几个图片的话,知道 中间的大图数据组织方式是一样的, 我们可以通过一个路径匹配来查找所有的src

    Ctrl+F

     下面是一个匹配模式,.//p[@id="l"]   .//p会匹配当前页面下 所有p标签  这里用属性id ="i"限制, 找到主框, 然后双斜杠 在p[@id="l"]  下面匹配所有的img。 后面/@src 是获得所有的src 也就是url

    上代码

    from lxml import etree
    html = etree.HTML(resp.text)
    srcs = html.xpath('.//p[@id="l"]//img/@src')

    得到的srcs是一个 list 只要遍历这个list 对每一个url 的图片进行download

    for src in srcs:
        time.sleep(0.2)
        filename= src.split('/')[-1]
        img = requests.get(src, headers=headers,timeout=10,verify=False)
        with open( 'imgs/'+ filename,'wb') as file:
            file.write(img.content)

    用到了time,用来延迟,防止请求过快被服务器认作受到攻击,之前本人就被一个网站封ip了,  还有很多其他方法, 比如 每次用不同的 User-Agent伪装成不同的浏览器, 还有用代理ip, 之后会提到。

    然后在当前目录创建imgs路径,  img.context是图片的内容。

    存的是bytes 所以用'wb' 打开。

    运行程序 在img下就有很多美女图片了

    一个简单的爬虫就完成了。

    学习尚浅,有错误或不当之处还请指正。

    
    
    
  • 相关阅读:
    CoffeeScript
    Android Metrics
    Mac VPS
    Android UI Design
    Android Interactive Animation
    iOS8 with Swift
    What is MEAN?
    Mac OS X “to open Eclipse, you need a Java SE 6 runtime”
    Android Screen Orientation
    Android Sensor Shake(WeChat)
  • 原文地址:https://www.cnblogs.com/hao11/p/11706502.html
Copyright © 2011-2022 走看看