我与Python爬虫的初次邂逅

2022-11-16 09:39:02 浏览数 (1)

背景

自己一直喊着要学爬虫,但是总是因为各种各样的事情耽误了。最近感觉不能再颓废了,于是乎重新拾起来这个小小的目标,开始学习。

开始

先是在知乎上如何入门 Python 爬虫?这个问题下看了看爬虫的基本概念和原理,发现原理和我之前的理解并没有什么出入,只是集群那一块是我之前没有关注到的。

然后,我找到了一个技术博客,看着那位程序媛写的一系列教程,基于Python3开始了我爬取单页面图片的尝试。

HTTP库用的是Urllib,HTML的解析工具,选用的是BeautifulSoup这个库。

代码

代码语言:javascript复制
from bs4 import BeautifulSoup
import urllib.request
#用做解析
import urllib.parse
#文件读写
import os

#返回请求到的内容
def url_open(url):
    req = urllib.request.Request(url)

    response = urllib.request.urlopen(req)
    html = response.read()
    return html

def get_links(url):
    # 获取HTML源码
    html = url_open(url)
    #解析HTML
    soup = BeautifulSoup(html, 'html.parser')
    #定位父div
    divs = soup('div', {'class': 'pic'})
    #存储img的列表
    img_addrs = []

    #拿到每一个div中的img及其的src
    for div in divs:
        img_urls = div.find('img')['src']
        img_addrs.append(img_urls)
    return img_addrs
def save_imgs(folder,img_addrs):
    for each in img_addrs:
        filename = each.split('/')[-1]
        with open(filename, 'wb') as f:
            #读取网络图片
            img = url_open(each)
            f.write(img)

def download_pic(folder = 'pic'):
    url = 'http://jcss.shangxin.link/spiderTest.html'
    img_addrs = get_links(url)

    os.mkdir(folder)
    os.chdir(folder)

    save_imgs('pic', img_addrs)

if __name__ == '__main__':
    download_pic()

这段代码的功能只是在一个单页面上爬取一些照片,由于初学,自己挂了个结构简单的测试页面以供爬虫爬取测试…

踩的坑

  • 在这里,我特别注意到了网上很多代码中用的是Urllib2这个库,到了Python3中无法运行,这是因为Urllib和Urllib2出现在python2中,在3中,统一整合Urllib ,而没有了Urllib2。
  • urllib.request.urlopen()的参数中输入的是一个页面地址,有一次忘记加上协议( http:// ),导致报错(这不算坑,逃…

0 人点赞